C语言中这个式子x=(y*5,y=y+6,y/z,y+=2+(z-=1));到底是怎么计算的?#include void main(){int x,y=7;float z=4;x=(y*5,y=y+6,y/z,y+=2+(z-=1));printf("x=%d\n",x);}为什么x答案是18?计算顺序是怎么样的?

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/04 12:08:14
C语言中这个式子x=(y*5,y=y+6,y/z,y+=2+(z-=1));到底是怎么计算的?#include void main(){int x,y=7;float z=4;x=(y*5,y=y+6,y/z,y+=2+(z-=1));printf(

C语言中这个式子x=(y*5,y=y+6,y/z,y+=2+(z-=1));到底是怎么计算的?#include void main(){int x,y=7;float z=4;x=(y*5,y=y+6,y/z,y+=2+(z-=1));printf("x=%d\n",x);}为什么x答案是18?计算顺序是怎么样的?
C语言中这个式子x=(y*5,y=y+6,y/z,y+=2+(z-=1));到底是怎么计算的?
#include
void main()
{
int x,y=7;
float z=4;
x=(y*5,y=y+6,y/z,y+=2+(z-=1));
printf("x=%d\n",x);
}
为什么x答案是18?计算顺序是怎么样的?

C语言中这个式子x=(y*5,y=y+6,y/z,y+=2+(z-=1));到底是怎么计算的?#include void main(){int x,y=7;float z=4;x=(y*5,y=y+6,y/z,y+=2+(z-=1));printf("x=%d\n",x);}为什么x答案是18?计算顺序是怎么样的?
(y*5,y=y+6,y/z,y+=2+(z-=1))
逗号表达式,规则:
从左到右依次计算每个表达式,整个表达式的值为最右边表达式的值.
左边开始:
y*5 无实际效果
y=y+6 此时:y=7+6=13
y/z 无实际效果
y+=2+(z-=1) 转化:y = y+2 + (z = z-1),y=y+2+3,y=13+2+3 = 18
最右边表达式的值即:18,所以整个表达式的值为18,即:x = 18