探索逗号表达式的运行方式:
先上代码:
#include<stdio.h>
int main()
{
int a = 0;
int b = 1;
int c = 2;
int d = 3;
a = (a = 3, a + 2, b + a, c = 2 * a + c);
printf("a = %d\n", a);
printf("b = %d\n", b);
printf("c = %d\n", c);
printf("d = %d\n", d);
return 0;
}
猜想1:括号内每执行一句便执行一句表达式,进行一次赋值,步骤如下:
1.a = a = 3
2.a = a + 2
3.a = b + a
4.a = c = 2*a+c
输出结果为 a = 14 b = 1 c = 14 d = 3;
猜想2:括号内从左到右执行表达式,只有最后一个表达式给左边的a赋值,步骤如下:
1.a = 3;
2.a + 2
3.b + a
4.a = c = 2*a+c
输出结果为 a = 8 b = 1 c = 8 d = 3
实际执行结果:
猜想2成立;逗号表达式括号内从左到右执行表达式,只有最后一个表达式给左边的变量赋值