krfs.net
当前位置:首页 >> C++:已知A、B、C的值为2、5、1,逻辑表达式'0'||(A++)&&A... >>

C++:已知A、B、C的值为2、5、1,逻辑表达式'0'||(A++)&&A...

'0'||(a++)&&(++b)||(c=3)相当于('0') || ((a++)&&(++b)) || (c=3)'0'字符对应的ASCII码是48, 48是非0值, 表示true, 于是整个表达式返回true(1)同时, 或者运算||是短路运算符, 只要||左边的表达式是true值那么为了节省时间就直接返回true而不用计算右边的表达式, 于是后面的(a++)&&(++b)和c=3都没有被执行; 同理&&也是短路运算符, &&左边只要为false就直接返回false而不计算右边的表达式, A?B:C只要A是true就只计算B, 否则只计算C

a - c优先级更高,先计算道 a-c,a -c = 1,得到 '0' ||回 (a > b) && (b> c) || 1,然后计算 (a > b) && (b> c),a > b 为false,所以 b > c 不算 ,得答到 '0' || false || 1,然后从左到右短路求值,得到结果为真

这是由于逻辑运算的“短路”所引起的.(a+=1)&&(b+=1)||(c+=2),当(a+=1)&&(b+=1)计算结束时,因不管后面结果如何,表达式值已经确定(均为真),此时C语言会结束本表达式的求值,继续后续语句执行.所以c+=2没执行,c依然为0

1、!是取非操作,0为假,非0为真,!真=0,!假=1,所以!0=1, !5=02、x=a是赋值操作,不是判断相等,即把a值赋值给x,所以x=a;3、先计算&&左边的式子,!(a+b)+c-1=!7+5-1=4=0+5-1=4,再计算&&右边的式子b+c/2=4+5/2=4+2=6,所以整个式子是4&&6=1

1和1 对于!(a+b)+c-1&&b+c/2 ,&&前后接两个表达式,一个是!(a+b)+c-1,另一个是b+c/2 ,第一个表达式结果为c-1即2(因为(a+b)非0,故!(a+b)结果为0),第二个表达式结果为6,所以这两个表达式均为非零,所以它们进行逻辑与操作之后的结果为1 对于a || b+c&& b == c,||逻辑或操作符连接两个表达式,但是第一个表达式为a,非0,故不用求后一个表达式的值,所以该表达式结果为1 在vs2010上运行通过 测试代码如下:int a=3,b=4,c=5 ; int d = !(a+b)+c-1&&b+c/2; int e = a || b+c&& b == c; cout cout

c=0; b=c; a=b; c=c++(c=0)用过后为c=1; b=++b(b=1)用过后为b=0;++b&&c++=0(1&&0为假值为0) a=++a(a=1)用过后为a=0;0||0为真值为1.表达式值为1,a=0,b=0,c=1.

0 a+b>c 为真 b==c 为假 整体为假 1 b+c && b-c 先集合 , a 为真,对|| 来说 整体为真 1 !(a>b)为真,!c 为假, 后面有个 1 所有整体为真 1 x=a是真!(x=a)为假,后面不计算 1 !(a+b)+c-1 =4 后面为 6

在逻辑运算中 非0视为1(true),0视为0(false);&&逻辑与运算.||逻辑或运算.!逻辑非运算.优先级:! > +- > && > ||1、3||4+5&&4-5=3||9&&-1 = 3||1 =1( true);2. =!0&&0||1=1&&0||1=0||1=1(true);其他同理

1.C++ 填空题.在C++语言中,表示逻辑“真”值用 true 或 1.2.C++语言中的每条基本语句以 ; 作为结束符,每条复合语句以 } 作为结束符.3.设a、b、c均为int型变量且a=7.5,b=2,c=3.6,则表达式a>b&&c>a||a<b&&!c>b的值是 0 .4.设a、b、c

答案为1.详解:!(a+b)+c-1 && b+c/2等价于(!(a+b)+c-1) && (b+c/2)计算机内部计算步骤(可以查看汇编)先算!(a+b)+c-1 >0+5-1>4测试上一步结果(结果为4),表达式为真.再算b+c/2>结果为6(注意4/2结果为2,

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