我想知道a[3] = (a[1], a[2]);
在以下代码中做什么。它返回a[3] = 0
。而且,如果我消除括号,a[3] = a[1]
和a[2]
不会改变其值。
谢谢!
#include <stdio.h>
int main(int argc, char ** argv) {
int a[4] = { 100, 200 };
a[3] = (a[1], a[2]); // What happens here?
printf("%d %d %d %d\n", a[0], a[1], a[2], a[3]);
return 0;
}
答案 0 :(得分:0)
a[3] = (a[1], a[2]);
是什么意思?
您正在使用逗号运算符将a[3]
的结果分配给表达式。
在调试器中尝试该示例,可以更清楚地了解发生的情况
#include <stdio.h>
int main(){
int a[10] = { 100, 200 ,-10,-20,-30 };
a[3] = ( a[1]++,a[3]++,a[4]++ );
printf("%d %d %d %d\n", a[0], a[1], a[2], a[3]);
}
表达式的第一部分被执行,但是在您的示例中a[1]
被忽略,在该示例中它被递增,然后a[3]
被分配了括号中的最后一个值a[4]
See more in this answer to "How does the Comma Operator work"
答案 1 :(得分:0)
a [3] =(a [1],a [2]); //这里会发生什么?
当表达式之间用逗号分隔时,将返回最后一个。
int a = (1, 2, 3);
// a = 3