C学习笔记(逗号表达式)
(1)书写:
①
int i;
i=(i=*,i*);
printf("%d\n",i);
i=60;
②
int i;
i=i=*,i*;
printf("%d\n",i);
i=15;
③
int i;
i=*,i*;
printf("%d\n",i);
i=15;
发现了吗,因为赋值优先级比逗号表达式高,所以①中括号内的表达式先进行i=15的操作,再进行i*4;
而如果如②和③,根本没有括号括起,逗号表达式2是没有意义的;
(2)使用:
1、从左到右逐个计算;
2、最后一个表达式的值是最终值;
#问题Ⅰ:(1)③中的逗号表达式2是否会进行呢?
其实我觉得这个问题没有正确的解答,因为它根本不会对哪一个值产生影响,它只是一个算术表达式,所以看下面这个例子:
int x,y,z;
z=x++,y++,++y;
printf("%d %d %d\n",x,y,z);
显然x=2,y=3,z=1;
3、逗号表达式多用于for语句中;
#问题Ⅱ:逗号表达式中有没有序列点(Sequence Point)?
我想知道上例中逗号表达式中间的y++执行完以后,++y执行之前的y究竟有没有自增,但是苦于没有想到方法,估计要用到汇编窗口吧。故而再翻阅了了一些序列点的资料,暂且得出了一个答案:有,正因为有序列点,才能保证逗号表达式自左向右的运算顺序;
看来其中学问还是很多的,所以接下来考完试需要继续深挖Sequence Point和Side Effect。
C学习笔记(逗号表达式)的更多相关文章
- Java8学习笔记----Lambda表达式 (转)
Java8学习笔记----Lambda表达式 天锦 2014-03-24 16:43:30 发表于:ATA之家 本文主要记录自己学习Java8的历程,方便大家一起探讨和自己的备忘.因为本人 ...
- (C/C++学习笔记) 六. 表达式
六. 表达式 ● 表达式 表达式 expression An expression consists of a combination of operators and operands. (An o ...
- Javaweb学习笔记——EL表达式
一.前言 EL表达式是什么? 简而言之,可以这样理解,EL表达式全名为:Exprexxsion Language,原先是JSTL 1.0为了方便存取数据而定义的语言,到了JSTL 2.0便正式成为标准 ...
- java学习笔记—EL表达式(38)
EL表达式 EL即Expression Language,主要的任务是帮助开发者简化获取域属性. 但是一般情况下需要使用EL和JSTL结合使用. 语法: ${ // 隐含对象|直接写域中的属性 } ...
- struts2学习笔记--OGNL表达式1
struts2标签库主要使用的是OGNL语言,类似于El表达式,但是强大得多,它是一种操作对象属性的表达式语言,OGNL有自己的优点: 能够访问对象的方法,如list.size(); 能够访问静态属性 ...
- 重温JSP学习笔记--El表达式
el表达式是jsp内置的表达式语言,jsp从jsp2.0开始,就不再提倡使用java脚本,而是用el表达式和动态标签来替代,而el表达式主要替代的是jsp中的<%=....%>,也就是说e ...
- JavaScript高级程序设计学习笔记--函数表达式
关于函数声明,它的一个重要特征就是函数声明提升,意思是在执行代码之间会读取函数声明,意思是在执行代码之前会先读取函数声明.这就意味着可以把函数声明放在调用它的语句 后面. sayHi(); funct ...
- .net学习笔记---lambda表达式(自执行方法)
http://www.cnblogs.com/jesse2013/p/happylambda.html#b034 lambda表达式 http://www.cnblogs.com/OceanEyes/ ...
- 学习笔记: Expression表达式目录树详解和扩展封装
1. 表达式链接扩展封装,ORM常用 And Or /// <summary> /// 表达式访问者 /// </summary> public class Expressi ...
- Scala学习笔记(3)-表达式归纳
语法:使用表达式定义值和变量 val <identifier>[:<type>]=<expression> 字面值类型 var <identifier> ...
随机推荐
- DSAPI多功能组件编程应用-HTTP监听服务端与客户端_指令版
前面介绍了DSAPI多功能组件编程应用-HTTP监听服务端与客户端的内容,这里介绍一个适用于更高效更快速的基于HTTP监听的服务端.客户端. 在本篇,你将见到前所未有的超简化超傻瓜式的HTTP监听服务 ...
- 企业微信快捷接入Odoo的模块——WeOdoo
WeOdoo Odoo 快速接入企业微信,快捷使用,基于Oauth2.0安全认证协议,免对接开发配置,支持局域网等内网环境的 Odoo 服务 详见: http://oejia.net/blog/201 ...
- Proj.Net 投影介绍
Proj.Net是开源地图投影库Proj.4的.net版本,许多GIS开源软件的投影都直接或间接地使用Proj.4的库,Proj.4是用C语言编写..Net下的开源GIS项目NetTopologySu ...
- 可能是最全面的G1学习笔记
引子 最近遇到很多朋友过来咨询G1调优的问题,我自己去年有专门学过一次G1,但是当时只是看了个皮毛,因此自己也有不少问题.总体来讲,对于G1我有几个疑惑,希望能够在这篇文章中得到解决. G1出现的初衷 ...
- .Net Core 在Linux服务器下部署程序--(2). 部署前需要安装的软件及SDK
安装通用软件 : ping , telnet , lrzsz , zip , wget 安装ping软件,用于测试当前服务器与其他服务器之间的网络通畅情况,和Windows的Ping类似 执行ping ...
- 关于windows系统无法更新的解决方法
操作系统无法更新解决方案! 1.检查网络连接是否正常: 2.检查控制面板设置,windows更新是否开启: 3.检查计算机-管理-服务和应用程序-服务组件里的windows update是否开启: 4 ...
- python3 变量理解 解释器理解 常量理解 用户交互理解 逻辑运算
先来条NLP再说...... 九,每人都已经具备使自己快乐的资源 每一个人都有过成功快乐的体验,也即是说有使自己快乐的能力. 人类只用了大脑能力极少部分,提升大脑的运用,很多新的突破便会出现. 运用大 ...
- 【死磕Java并发】-----Java内存模型之happens-before
在上篇博客([死磕Java并发]-–深入分析volatile的实现原理)LZ提到过由于存在线程本地内存和主内存的原因,再加上重排序,会导致多线程环境下存在可见性的问题.那么我们正确使用同步.锁的情况下 ...
- Image和Base64互相转换
base64介绍: Base64编码是从二进制到字符的过程,可用于在HTTP环境下传递较长的标识信息.例如,在Java Persistence系统Hibernate中,就采用了Base64来将一个较长 ...
- GC参考手册 —— GC 算法(基础篇)
本章简要介绍GC的基本原理和相关技术, 下一章节再详细讲解GC算法的具体实现.各种垃圾收集器的实现细节虽然并不相同,但总体而言,垃圾收集器都专注于两件事情: 查找所有存活对象 抛弃其他的部分,即死对象 ...