#include <stdio.h> //预处理命令
int main() //函数首部,无参
{ //函数体
int a=5,i=2,b;
a=a++,++i;
printf("%d",a);
return 0; //返回值
}
有以上程序,输出结果是什么?
如果将第五行加个括号,修改成下面这样:
a=(a++,++i);
输出结果又是什么?
首先,这两个结果肯定是不一样的。第一种情况,a最终的值是6;第二种加了括号,a最终的值是3。
这里涉及到了逗号运算符,C语言运算符优先级最低的就是逗号运算符了。
所以,没有加括号的时候是先执行a=a++,再执行++i。根据逗号运算符规则,这一行整个表达式的值是++i。加了括号,括号里面这个表达式的值就是++i,最终给a赋值也就是3。