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

在逻辑运算中 非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);其他同理

逻辑运算符并不是运算符两边的表达式一定都执行,就本例来说:a = b = c = 0;d = ++a||++b&&c++;1、&&的优先级比||高,注意优先级是“结合优先级”而不是“计算优先

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.详解:!(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,

a=b=c 3; 从右往左赋值 先b=c,则b=3,再a=b,即a=3,所以值为3;a=b==c 0;先==运算,再=运算,b==c值为0(bool运算结果为假)再赋给a ,即a=0,值为0;a==(b=c) 0;先挂号里的,c赋给b,值为3,再挂号外运算,1==3 为假,值为0;a==(b==c) 0;先挂号里,b==c 值为0(bool运算结果为假),然后是1==0为假,值为0;

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

一、逻辑运算符的优先级 在C程序设计语言中,三个逻辑运算符的运算优先级按从高到低的顺序是:(1) ! (逻辑非) (2) && (逻辑与) (3) || (逻辑或) 二、分析过程 a || b+c && b-c 等价于 a || (b+c && b-c) 三、运算过程分解 已知a、b、c的值分别是3、4、5 计算表达式的值的步骤是:(1)计算“b + c”的值是 9 ;(2)计算“b - c”的值是 -1 ;(3)计算“(b+c && b-c)”的值,等价于计算“9 && -1”,即为 1 ;(4)计算“a || b+c && b-c”的值,等价于计算“3 || 1”,即为 1 .故最终整个表达式的值是 1 .

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