c语言x=1;y=1;z=0;x=x||y&&z;为什么x等于1

作者&投稿:申委 (若有异议请与网页底部的电邮联系)
c语言x=1;y=1;z=0;x=x||y&&z;为什么x等于0~

你运行过吗?x不等于0,x等于1。

上面的兄弟说得没错.++X和X++是不同的,一个先增,一个是后增.先增就是先加了1再运行,后增运行后加1.而W=++X||++Y&&++Z不是一个运算,你要搞清楚,W=++X,因为X=1,++X就等于2,因为等于2非零,||是或的意思,&&是与,那么++X已经是非零了,就不会执行下一条,直接返回W=1.1是真值,0是假.
最后结果,W是1,X加完后就等于2,Y和Z都没有加,所以就等于1.

因为&&的优先级比||高一级,所以x=x||y&&z;这个语句的等号右边等效为x || (y && z);。执行时由于x=1,再碰到||就不执行了,因为无论||右边的结果是什么,都不影响整个表达式为1的结果了——一个“真值“或任何逻辑值都是”真值“,所以结果为1。


设int x=1, y=1; 表达式(!x||y--)的值是 要说明方法
根据运算符优先级和结合性可知,原式等效于 ((!x)||(y--))对于子表达式代入xy值可知 !x值为0(假)y--,由于是自减运算符后缀,所以表达式值为y的原值1(真)所以整个表达式值为1(真)例如:逻辑运算的表达式,非0即1。!x的结果是0 y--的结果是1 0跟1逻辑或的结果是1 ...

C语言问题,设 int x=1, y=1; 表达式(!x||y--)的值是()。答案怎么是1呀...
逻辑运算的表达式,非0即1。!x的结果是0 y--的结果是1 0跟1逻辑或的结果是1

设int x=1,y=1;表达式(!x||y--)的值 是怎么 运算的。求解。
1.先算!x,结果为0;2.再算y--,结果为1,y的值变为0;3.再算逻辑或||,0或1,结果为1。所以最后结果为1 优先级:自减运算符>逻辑非运算符>逻辑或。基本的优先级需要记住:指针最优,单目运算优于双目运算,如正负号。先算术运算,后移位运算,最后位运算。请特别注意:1 << 3 + 2 &...

若有定义“int x=1,y=1;",表达式(!x||y- -)的值是? 请说明怎么计算_百 ...
||结果是1。||两边只要有一边为“真”就取1,因为!x==0,所以还要计算||右边的y--,而y--先用值后--,y的值是1为“真”,所以整个表达式的值就为“真”即1。而后才对y作--操作使其值变为0。根据运算符优先级和结合性可知,原式等效于 ((!x)||(y--))对于子表达式代入xy值可知 !

int x=1,y=1,表达式(!x‖y--)的值是多少
这个问题不算难,我来吧。求这个表达式的值,关键是要清楚运算符的优先级。在C语言中,单目运算符(即只有一个操作数)的优先级一般高于双目运算符,!的优先级高于ll,表达式从左往右计算(当然有些编译器从右往左计算,不过这并不影响),!1就是0,y--这个表达式先把y作为返回值送出去,再进行...

【大学C++语言】设有int x=1,y=1,z=1,
那么就为真,且如果||的左边为真,右边就不执行(因为结果必定为真,反之如果为假,右边就需要执行)【注:这里真和假对于程序来说就是0和非0,如果值为0,就是假,非0的值,比如1.2.3等全部为真】。因为||后不执行,x,y为原值。都为1,所以答案为:x=2,y=1,z=1 ...

c语言 { int x=1,y=1; if(0)if(1)x=2;else y=3; printf("x=%d,y=...
第一个if语句无论何时都不成立,所以不会执行第二个if语句,直接执行else即y=3.结果是x=1,y=3

C语言中 main() {int x=1,y=1,z=0; if(z<0) if(y>0 具体请看下边程序...
由于刚刚学习这门语言,请指教 main(){intx=1,y=1,z=10;if(z<0)if(y>0)x=3;elsex=5;printf(''%d\\t'',x);if(z=y<0)x=3;else... main() {int x=1,y=1,z=10; if(z<0) if(y>0) x=3;else x=5; printf(''%d\\t'',x);if(z=y<0) x=3; else if(y==0) x=5;...

详细说明一下这个C语言是1 7 0
include <stdio.h>int main() {int x = 1,y = 1,z = 0;if(z < 0) {\/\/假,不执行{}内的语句块。if(y > 0) x = 3;else x = 5;}printf("%d\\t",x); \/\/ 这里输出1和8个空格。if(z = y < 0) x = 3;\/\/y原值是1,y < 0为假, 故z值为0,不会执行x = 3操作...

设int x=1,y=1;表达式(!x++ || y--)的值是什么?要求详细解答
我们知道,!(即逻辑非)的优先级要比自加运算符高的,所以!x++是先求!x也即0,而后执行自加,但是在求“或”的时候,同样它是用!x(即0)的值先参与求“或”,然后x加一,也就是说最后上面表达式的值是0||1结果是1.

禹州市13718826451: c语言x=1;y=1;z=0;x=x||y&&z;为什么x等于1 -
宾赖蒙诺: 因为&&的优先级比||高一级,所以x=x||y&&z;这个语句的等号右边等效为x || (y && z);.执行时由于x=1,再碰到||就不执行了,因为无论||右边的结果是什么,都不影响整个表达式为1的结果了——一个“真值“或任何逻辑值都是”真值“,所以结果为1.

禹州市13718826451: C语言中 main() {int x=1,y=1,z=0; if(z<0) if(y>0) x=3; -
宾赖蒙诺: z=y

禹州市13718826451: c语言基础,搞不懂x的值怎么来的 -
宾赖蒙诺: 语句y=--x,可以拆成两句语句来看,由于是前置型--操作,因此首先执行--x,于是x自减1,变为0,然后再执行y=x,所以y=0 语句z=x++,也可以拆成两句语句来看,由于是后置型++操作,因此先执行z=x,于是z=0,再执行x++,所以x变为1 综上,最终结果为x=1,y=0,z=0,即为结果

禹州市13718826451: c语言逻辑运算 int x,y,z; x=y=z=0;++x||++y||++z;为什么结果等于 x=1 y=0 z=0? -
宾赖蒙诺: 3 个都是或运算 第一步xyz都等于0 或运算只要算第一个是0还是1 如果是1的话就不需要往后算了,后面的就等于原值,所以++x==1 所以后面的y++和z++电脑都不会执行.

禹州市13718826451: C语言中 main() {int x=1,y=1,z=0; if(z<0) if(y>0 具体请看下边程序.由于刚刚学习这门语言,请指教 -
宾赖蒙诺: 由于z=10,所以 if(zif(y>0) x=3; else x=5; 这段不执行. x初始为1,printf(''%d\t'',x);打印1.z=y=1>0所以 else if(y==0) x=5; 不执行,进入到else x=7,打印出7.其结果为1 7

禹州市13718826451: main(){int x=1,y=1,z;z=!x|| -- y;printf("%d,%d,%d",x,y,z);结果是x=1,y=0,z=0而不是x=y=z=0请Help me! -
宾赖蒙诺: 结果是x=1,y=0,z=0 int x=1----------------给x赋值1 y=1------------------y初始值为1 z=!x||--y--------------!x没有改变x的值,x仍然是1,但(!x)整体的值是0, 而--y是先做y的自减运算,y从1变为0,(--y)整体的值也为0,就是z=0||0,即z=0

禹州市13718826451: 当x=y=z=0时,c语言中++x || ++y && ++z; x ,y,z的值是多少 -
宾赖蒙诺: x为1, y和z不变 为0. 一、 根据运算符优先级 &&要高于|| 所以 这个表达式等效于 ++x||(++y&&++z) 二、 虽然&&优先级要高,但并不代表要先计算右侧的&&, 而是右侧是一个整体. 在计算的时候还是从左到右扫描的. 先计算++x, x先自加为1. ...

禹州市13718826451: 语言中 条件运算 int x=1,y=0,z;z=x==(x+y)?5:10>y++?1:2 求x y z
宾赖蒙诺: int x=1,y=0,z; z= ( (x==(x+y))?(5):((10>y++)?(1):(2))) 如果是C语言,答案将是不固定的. 对于不同编译器可能有不同的结果. x=1,y=0,z=5 只是一种结果,有些编译器会有不同的输出,因为这是一个未被C标准所所严格定义的行为.关键点在y++, c标准并未对临界点做严格限制, 编译器的开发者可以自己根据需要来定义临界点,也就是这个+1的操作发生在未来的什么时候,由编译器自行决定.所以代码中要杜绝这样的写法.

禹州市13718826451: c语言中intx=1,y=1,!x||y――的值 -
宾赖蒙诺: 你的意思是要问:int x=1,y=1; 表达式!x||y--的返回值是多少是么.是1. !x返回0 y--先取值后--,所以返回1 所以原表达式相当于 0||1 ,所以是1

禹州市13718826451: { int x=0,y= - 1,z=1;if(x=y+z) printf("* * * *");else printf("# # # #"); } 求详细的解释 -
宾赖蒙诺: int x=0,y=-1,z=1; //变量定义和并且赋初值 if(x=y+z) {//判断等式x=y+z的值,即x是否为真,因为x=y+z=0,c中0为false,非0为trueprintf("* * * *"); //打印*号 } else {printf("# # # #"); //打印#号 } 结果应该是打印# # # #,因为等式的值为false,应该执行else下面的代码

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网