我遇到了一个代码段,其中使用了一个语句int k=(a++,++a)
。
我不明白这个类型的语句是(a++,++a)
以及它将如何评估。为什么在这里使用支架?这是函数调用吗?
这是代码。
#include <stdio.h>
int main(void) {
int a=5;
int k=(a++,++a);
printf("%d\n",k);
return 0;
}
我得到的输出是7 - 为什么会这样?
答案 0 :(得分:6)
这不是函数调用。
这是使用逗号运算符的示例,该运算符从左到右计算每个表达式并返回最右侧表达式的结果。它和写作一样
a++;
k = ++a;
如果已经写好了
k = a++, ++a;
然后它将被解析为
(k = a++), ++a;
并评估为
k = a++;
++a;
答案 1 :(得分:0)
是的,你是对的;这就是为什么以下代码
int main(void) {
int y=1,x=0;
int l=(y++,x++)?y:x;
printf("%d ",l);
return 0;
}
生成1
作为输出。
(y++,x++)
的值返回x
,即最右边的表达式,因此l
的值变为1
。