jmfs.net
当前位置:首页>>关于C语言中 逗号表达式 是怎么计算的 例如 x=y=1, z...的资料>>

C语言中 逗号表达式 是怎么计算的 例如 x=y=1, z...

逗号运算符由左向右运算

x=1,y=1 z=x++ 把x给z,所以z=1,之后x++,所以x=2; y++ 原来y=1,现在变成2 ++y 前面y=2,现在变成3. 所以,最后: x=2 y=3, x=1

(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+...

这个语句大部分是用在if()里面当作条件表达式的,因为C语言没有真正意义的BOOL类型,而是定义了 0 为 FALSE, 非 0 为TRUE,所以条件表达式可以是算术表达式 先计算 (x+y) 再取 非 (这里注意,任何非零的值取非,结果是0, 但是 0 取非,值为1,...

1,2,1,1 w是1因为表达式的结果是1, x的值是2因为++x了 y,z的值不变是因为,当运行到x++时这个表达式的值已经是1了不用往后运行了所以没有进行++y,++z

分解计算 这和C的计算逻辑有关, z--先计算后赋值,在这个式子里其值是3 ++x先赋值后计算,所以是2 y+=3/2 等效于 y=2+(3/2)=2+1(如果X,Y,Z都是int变量) 话说你这个题坑还是挺多的。 其实你应该写在c或者PHP里分步执行下,观察每个变量的值...

#include using namespace std; int main() { int x,y,z,w; x=y=z=1; //x=1,y=1,z=1; w=++x||++y&&++z;//x=2,因为++x之后x=2;++x整个表达式也为2>0,所以||后的运算就停止了w= 1;y=1;z=1; ///或运算遇到大于等于0就返回1.不再向后计算。 cout

只是等于1的,我是经过turbo c2.0编译过的,答案应该没什么问题的,程序是: main() { int x,y,z,k; x=3;y=4;z=5; k=0; k=!(x+y)+z-1&&y+z/2; printf("%d",k);} 答案为什么会等于1呢?那是因为运算级别的问题,根据运算级别,实现算括号里面的先...

z=y

y=10对10求余,然后这z=10-1

网站首页 | 网站地图
All rights reserved Powered by www.jmfs.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com