1. 新名词?

今天看到一个新名词: 逗号表达式。 C语言就有。额,怎么当时学习C没见过,一头雾水。 对我来说是新名词,其实它早就存在了,只是我还不知道。

2. 逗号表达式

C语言提供了逗号运算符----一种特殊的运算符。 形如:

表达式1,表达式2

这里,其将两个表达式连接起来,类似这样的表达式被称为逗号表达式, 比如: a+b, 3+3。

3. 解析过程

形式: 表达式1,表达式2

计算表达式1的结果,计算表达式2的结果。既然整体是逗号表达式,他肯定有个结果,那么他的结果是表达式2,与表达式1的结果无关。例如:

int a = 1;      // (1)
a = (a = 2 * 5, a * 4); // (2)
std::cout << "a = " << a << std::endl; // (3)

首先(1)中,a=1, (2)中,(a = 2 * 5, a * 4)是一个逗号表达式,(2)整体是一个赋值表达式。(2)的计算过程:先计算 a=2*5, 再将10(2*5)赋值给a, 此时,a = 10, 最后计算表达式2 a * 4的结果,a = 10, a * 4 = 40。逗号表达式的结果为40,最终将40赋值给a,a最终等于40.

4.优先级

逗号运算符是一种特殊的运算符,其优先级为最低。看下面的例子:

例A

a = (a = 2 * 5, a * 4);

例B

a = 2 * 5, a * 4;

例A与例B的区别是,例A是一个赋值表达式,例子B是一个逗号表达式。

5.扩展

扩展形式: 表达式1,表达式2,表达式3......表达式X

整体计算结果为最后一个表达式X的值。

一个例子

int a = 1;
a = (a = 2 * 5, a * 4, a + 1, a + 2, a + 3);
cout << "a = " << a << endl;

按照规则,整体是一个赋值表达式,其中,=右边的逗号表达式的最终结果为 a+3,而a = 2 * 5 = 10, 所以,赋值表达式计算结果: a = 13

最新文章

  1. 【Java EE 学习 33 下】【validate表单验证插件】
  2. http://tool.oschina.net 在线API文档库java jquery ,php,很全的文档库
  3. 原因是出现以下错误: 80040154 没有注册类 (异常来自 HRESULT:0x80040154 (REGDB_E_CLASSNOTREG))
  4. jquery单选框radio值改变change事件
  5. DIV 垂直 垂直水平 居中
  6. curl上传、下载、https登陆
  7. iOS开发——使用技术OC篇&amp;简单九宫格锁屏功能的实现与封装
  8. jquery serialize()方法的扩展
  9. LB集群
  10. sql求和涉及到null值
  11. Fiddler工具的基本功能(转)
  12. AOP in Spring
  13. MyEclipse2014/2015 安装Activiti插件
  14. linux基础简答(1)
  15. 如何使用apache的ab压力测试小工具传参数
  16. UML与软件建模:第一次作业(用例图绘制)
  17. linux-shell系列4-init
  18. AssetBundle使用心得【资源加载】
  19. mysql slave 主从 指定表 通配符
  20. BeautifulSoup基本步骤

热门文章

  1. Vue 中使用 extent 开发loading等全局 组件
  2. [Linux]非root的R环境被conda破坏后如何恢复?
  3. 一个简单的BypassUAC编写
  4. Linux内存管理和寻址详解
  5. Linux 内存泄漏 valgrind
  6. 16. Linux find查找文件及文件夹命令
  7. [学习总结]4、Android的ViewGroup中事件的传递机制(一)
  8. GO类型转换
  9. 动态规划系列(零)—— 动态规划(Dynamic Programming)总结
  10. RPC 框架