mshd.net
当前位置:首页 >> 设有以下程序段int x=0 >>

设有以下程序段int x=0

while(!x!=0) 等价于 while ( (!x) != 0), 则 s初始化值为0,故有 !x = 1,接着 1 != 0 ,显然,结果为真 执行while后面的循环语句 s+=++x;(注意,++是前缀的),即 s = s+(++x)[ s= 0+ 1=1] ,完成后x=1,再次进入循环判断, 根据上面的分析...

&&优先级高于||,所以可以这样写: a=++x||(++y&&z++); a=3||(3&&0); a=3||0; a=1; z++遇;号才自加,++x和++y先进行自加。 x=3,y=3,z=1;

结果是0; x=1,!x为false 所以再判断x==0也不成立故y=0 else if (x==0) if (x) y+=2; else y+=3; 和 else if (x==0) { if (x) y+=2; else y+=3; } 是一样的意思

int x=2,y=2,z=0,a; a=++x||++y&&z++; //上面等价于 x++; a= x || (++y&&z++); 由于x>0, 而右边是 || 所以 不会运行 (++y&&z++) printf(″%d,%d,%d\n″,x,y,z); //结果是 3,2,0

C语言中True 用非0的数表示,False 用0表示 while(x=0) 先把0赋值给x,然后x作为逻辑值,可知 x=0 等价于while(Fasle) 所以不执行循环体

循环条件是p的值不等于12345并且n的值小于3;结束条件的确是p的值等于12345或者n的值大于等于3

x 3 y 2 z 0 还有测试就能得到答案

楼主可以分析一下语句while(!x!=0)s+=++x;循环的条件是!x!=0,非x不等于零,这个X的值只有0,能够满足。所以语句只有X=0时,才实现。接着进入内部循环,s+=++x,执行后s=1,x=1。x=1,时不满足!x!=0,跳出循环,打印s,程序结束。

就是D啊 if(!x)y++;等价于 if(0)y++; 是个非值 等式不成立 上面的if 和else语句都没有执行 返回初始值 0

执行结束后,打印(7,7) x=7 y=7

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