一个简单的加减乘除问题,求助啊
为什么int x;
printf("%d\n", (x = 4 * 5, x * 5), x + 25);
等于100.
int x;
printf("%d\n", ((x = 4 * 5, x * 5), x + 25));
等于45. printf("%d\n", (x = 4 * 5, x * 5), x + 25); //本来有2个%d的,你给打一个printf("%d,%d\n", (x = 4 * 5, x * 5), x + 25);
(x = 4 * 5, x * 5), x + 25 是2个表达式
起作用的只有 (x = 4 * 5, x * 5)
1,x = 4 * 5;
2,x*5 // 4*5 * 5 用%d输出 意思就是printf("%d\n", 4*5 * 5);
printf("%d\n", ((x = 4 * 5, x * 5), x + 25)); //这里1个%d((x = 4 * 5, x * 5), x + 25)
((x = 4 * 5, x * 5), x + 25)语句分来开就是
1,(x=4*5,x *5);
1.1x*5 //没用的东西
1.2x = 4*5;
2,x +25; // 4*5 + 25 然后%d输出 意思就是printf("%d\n",4*5 + 25);
最后 x=4*5 = 20
为什么printf("%d\n", (23 ,45 , 7 ,3 ,45 , 23);
打印的是23呢 运算符 名称或含义 使用形式 结合方向 说明
, 逗号运算符 表达式,表达式,… 左到右 从左向右顺序运算
PS:逗号运算符默认返回最右边的数值
例如 :
int x = (1,2,3,4,5);
x的值为5. 逗号运算符最终的结果是最右边的值
printf的%d占位符直接从后面紧跟着的逗号后面取值 我也不明白为什么第一个不是45而是100 。printf()函数的函数参数传递方向不是从右向左么, 主要是printf参数和逗号运算符的问题
页:
[1]