逗号运算符是指在C语言中,多个表达式可以用逗号分开,其中用逗号分开的表达式的值分别结算,但整个表达式的值是最后一个表达式的值。

逗号运算符是指在C语言中,多个表达式可以用逗号分开,其中用逗号分开的表达式的值分别结算,但整个表达式的值是最后一个表达式的值。

例子:

int a1,a2,b=2,c=7,d=5; // 第1行

a1=(++b,c--,d+3); // 第2行

a2=++b,c--,d+3; //第3行

对于给a1赋值的代码,有三个表达式,用逗号分开,所以最终的值应该是最后一个表达式的值,也就是(d+3)的值,为8,所以a1的值为8。

对于给a2赋值的代码,也是有三个表达式,这时的三个表达式为a2=++b、c--、d+3,(这是因为赋值运算符比逗号运算符优先级高)虽然最终表达式的值虽然也为8,但b=4(第2行代码运算完时,b=3,即第3行代码运行时,b的值为4),所以a2=4。

注意:逗号运算的结合性是从左至右,完毕之后整个表达式的值是最后一个表达式的值。

例子:int a[2],x=2,y=5;

a[0]=(x+3,y++,x++);那么最终结果是:a[0]=2 x=3 y=6;

为何a[0]=2:因为(x++)是运算之后再自加

a[1]=(x++,x+3,x+7);那么最终结果是:a[1]=10 ,x=3

再来一个关于结合性的例子:

int i=24;

int n = (i++,i++,i++,i++); // n == 27

因为逗号运算符的结合性是自左向右,所以四个i++会依次运行,但是最后一个i++在赋值之后才进行运算,所以最终返回27。

推荐教程: 《c语言教程》

更多相关文章

  1. c语言逗号运算符用法是什么?
  2. C语言中switch语句的case后能否是一个关系表达式
  3. for循环是先执行循环体语句,后判断表达式吗?
  4. 判断char型变量ch是否为大写字母的正确表达式是什么
  5. Go语言使用正则表达式提取网页文本
  6. 在Go中使用正则表达式
  7. 使用正则表达式进行xml数据验证的代码实例详解
  8. 可以用在 VS Code 中的正则表达式小技巧[每日前端夜话0x68]
  9. 正则表达式中零宽断言的用法

随机推荐

  1. Android的icon设计指南
  2. Android 8.0 Activity启动过程分析
  3. Android Studio常用混淆配置
  4. Android中自定义Dialog外形,去除黑底和白
  5. Android用户体验团队:Android(安卓)UI设计
  6. Unity5 和 Android 通讯(2)
  7. android 状态栏 时间 错误 adb连接
  8. 如何使用APK扩展文件
  9. android 自定义attr 详解
  10. Android的xml文件中引用类型