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> ...
随机推荐
- C# Array数组是引用类型
在C#中值类型都是由System.ValueType的直接派生类,System.ValueType本身又是直接从System.Object派生的.派生的意思是‘利用继承机制,新的类可以从已有的类中生出 ...
- SQL server脚本语句积累
1:往现有的表中增加一个字段 IF NOT EXISTS ( SELECT 1 FROM sys.sysobjects so WITH ( NOLOCK ) INNER JOIN sys.syscol ...
- [ArcGIS API for JavaScript 4.8] Sample Code-Get Started-popups简介
[官方文档:https://developers.arcgis.com/javascript/latest/sample-code/intro-popup/index.html] 一.Intro to ...
- 虚拟机中安装Ubuntu后,安装VMwareTools出错的解决办法:Not enough free space to extract VMwareTools
1.选择安装VMwareTools 2.将加载后的Vmware Tools中的*.tar.gz文件,复制到桌面后提取,否则会报错: 3.然后进入提取后的文件下,运行终端 sudo ./vmware-i ...
- Zabbix系统介绍
监控概述 硬件监控 IPMI介绍文档:http://www.ibm.com/developerworks/cn/linux/l-ipmi/ 温度:使用ipmi对硬件温度,进行监控 硬盘:使用MegaC ...
- 一文了解腾讯云数据库SaaS服务
本文由云+社区发表 作者:邵宗文,2009年加入腾讯,现为腾讯云数据库专家产品经理.之前曾负责为OMG事业群构建数据库平台,部署,规划及运维支持,为腾讯网,新闻客户端,快报,视频,财经,体育等提供了稳 ...
- Ftp修改为主被动模式命令
FTP是有两种数据连接模式的,主动模式和被动模式. PORT(主动)方式:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路.当需要传送数据时,客户端在命令链路上用 ...
- windows之如何把iso文件转换为VHD文件
(1)Convert-WindowsImage.ps1的下载路径: 链接:https://pan.baidu.com/s/18duFQFW8T_yI2JeQ1lhJgQ 提取码:b5ps autoun ...
- Project file is incomplete. Expected imports are missing 错误解决方案
当你打开一个.net core的项目,Visual Studio 可能无法打开,提示如下错误: D:\workshop\Github\Ocelot\src\Ocelot\Ocelot.csproj : ...
- zabbix安装及简单使用备注
1.安装mysql yum install -y mariadb mariadb-server systemctl start mariadb 2.安装apache yum -y install ht ...