我遇到了一个代码片段,其中使用了一个语句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;
}
Run Code Online (Sandbox Code Playgroud)
我得到的输出是7 - 为什么?
这不是函数调用.
这是使用逗号运算符的示例,它从左到右计算每个表达式并返回最右侧表达式的结果.这和写作一样
a++;
k = ++a;
Run Code Online (Sandbox Code Playgroud)
如果已经写好了
k = a++, ++a;
Run Code Online (Sandbox Code Playgroud)
然后它会被解析为
(k = a++), ++a;
Run Code Online (Sandbox Code Playgroud)
并评估为
k = a++;
++a;
Run Code Online (Sandbox Code Playgroud)