int a=0,b=1,c=1,d;执行语句d=--a‖++b&&--c.求a,b,c,d的值
来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/19 02:09:11
int a=0,b=1,c=1,d;执行语句d=--a‖++b&&--c.求a,b,c,d的值
运行结果是:-1,1,1,1
楼上的,在式子中,--a || ++ b && --c; 这是一个布尔条件测试算式,只能是真(1)或假(0)
你可能认为如下是正确的:
布尔条件完整测试式子作如下运算:
&& 运算高于 || 运算,于是,测试 ++b && --c
++b = 2, -- c = 0 --> b = 2, c = 0
2 && 0 逻辑运算为= 假 ( 0 )
再测试 --a || 0: --a = -1, -1 || 0 = 真(1) , d = 真 (1)
于是最后结果是: -1, 2, 0, 1
但不是这样的!C 语言编译器优化了代码!
所以实际上在测试这样的逻辑算式时,如果有类似 A || B 的式子,那么实际上只测试一个就可以认定结果为真了.就只测试A,一旦A 为真,就不再计算B 了.
所以,实际上的程序运行中的计算过程是:
--a || ( ++b && --c ) 这个式子,最左边的 --a 先被计算,--a = -1,
由于它右边是或的关系(||)而且a 不为 0,因此,程序不再计算,直接赋值给 d.b 和 c都不曾改变过.
所以最终结果:-1, 1, 1, 1,
PS:楼主 这个是c语言啊. 这种事情对于所有的C 编译器(只要是有名的)都会优化成逻辑测试过程,以避免浪费时间.
楼上的,在式子中,--a || ++ b && --c; 这是一个布尔条件测试算式,只能是真(1)或假(0)
你可能认为如下是正确的:
布尔条件完整测试式子作如下运算:
&& 运算高于 || 运算,于是,测试 ++b && --c
++b = 2, -- c = 0 --> b = 2, c = 0
2 && 0 逻辑运算为= 假 ( 0 )
再测试 --a || 0: --a = -1, -1 || 0 = 真(1) , d = 真 (1)
于是最后结果是: -1, 2, 0, 1
但不是这样的!C 语言编译器优化了代码!
所以实际上在测试这样的逻辑算式时,如果有类似 A || B 的式子,那么实际上只测试一个就可以认定结果为真了.就只测试A,一旦A 为真,就不再计算B 了.
所以,实际上的程序运行中的计算过程是:
--a || ( ++b && --c ) 这个式子,最左边的 --a 先被计算,--a = -1,
由于它右边是或的关系(||)而且a 不为 0,因此,程序不再计算,直接赋值给 d.b 和 c都不曾改变过.
所以最终结果:-1, 1, 1, 1,
PS:楼主 这个是c语言啊. 这种事情对于所有的C 编译器(只要是有名的)都会优化成逻辑测试过程,以避免浪费时间.
int a=0,b=1,c=1,d;执行语句d=--a‖++b&&--c.求a,b,c,d的值
有输入语句:int a,b,c; scanf("a=%d,b=%d,c=%d",&a,&b,&c); 为使变量a的值为1
说明语句int a=-1,b=2,c=0,d=7 则执行下面赋值语句以后X的值为( )
已知int a=5,b=4,c=6,d;,执行语句d=a>b?(a>c?a:c):b后,d的值为________.
3、若有以下定义和语句:int a,b,c;scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);为了使1,
已知整数a = 1,b = 2,c = 3; 求表达式执行后a,b,c,d的值,表达式d = - - a l l b +
一道c语言的题目 int a=1,b=2,c=3; 则语句"printf("%d",(!(a>b)&&(a+b>c)||
设a=”a”,b=”b”,c=”c”,d=”d”,执行语句x=Iif((ad),”A”,”B”)后,x的值为
4.执行下列语句后a的值为( ),b的值为( C ).int a,b,c; a=b=c=1; ++a|| ++b &&
执行下列语句后a的值为( ),b的值为( ).int a,b,c; a=b=c=1; ++a|| ++b && ++c;
C语言int a=0,b=5,c;执行语句c=(a=b)||++a&&b++后求abc的值求过程
( )-(c-d)=(a-c)-(-b+d)