急!!C++.已知变量a,b,c是整型变量,且a=3、b=4、c=5,则表达式:!(a+b)+c-1 && b+c/2的值是?求详解~

如题所述

答案为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,因为都是整型,余数丢掉)
测试上一步结果(结果为6),表达式为真。
最后,将结果1赋给整个表达式,即最后的结果。
#include <iostream>
using namespace std;
int main()
{
int a = 3,b = 4,c = 5;
int result = !(a+b)+c-1 && b+c/2;
int step1 = !(a+b)+c-1;
int step2 = b+c/2;
cout<<"The result is ";
cout<<result<<endl;
return 1;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-01-08
!(a+b)+c-1 = 0 + 5 - 1 = 4
b+c/2 = 4 + 5 / 2 = 4 + 2 = 6

!(a+b)+c-1 && b+c/2 = 4 && 6 返回的可能是左值 4

std::cout<<!(a+b)+c-1 && b+c/2; 结果显示4
第2个回答  2011-01-08
值为1
本题为逻辑运算,根据运算符号的优先级可把该式子等效为( !(a+b)+c -1 )&&( b+c/2 )
优先级排序:()…… !、+、—、…… / …… && (优先级靠前优先计算)
分步解析:逻辑与左边:1)先计算a+b=7 ; 2) !(a+b)=! 7 = 0 ; 3)0+c-1=4
逻辑与右边:1)c/2=2; 2) b+2=6
4&&6(两边都为逻辑真值,相与亦为真值)
第3个回答  2011-01-08
!(a+b)+c-1&&b+c/2
=!(3+4)+5-1&&4+5/2
=0+5-1+2
=6
第4个回答  2011-01-08
4&&6 是1吧
第5个回答  2011-01-08
111
相似回答