注册 登录
编程论坛 C++教室

找个朋友来帮我看下一到习题,小弟菜鸟

gexy 发布于 2008-05-14 17:47, 747 次点击
2、写出下列程序的运算结果,并写出语句执行的先后次序(故意消除缩进)  
①  
#include "iostream.h"
int main()
{
int a=8,b=4,c=2,k=4,m=8,n=6;
cout <<a <<b <<c <<k <<m <<n <<endl;
if (a!=b || m!=a+b)
{
a=2*k!=!m;
a=a+a;
}
if (a+b>=0 && m/3.0>2)
{
m=k+3*!c;
}
else
{
k=k*!m!=c;
}
cout<<a <<m <<k <<endl;
return 0;
}
请大家帮我看下不用C++执行,自己测算还如何算出
还有一个小问题,输入个整数,如何得知是偶数,谢谢各位
8 回复
#2
newyj2008-05-14 17:59
if(a%2==0)判断求余 是否为零
#3
gexy2008-05-14 18:15
谢谢楼上
#4
忘记喧嚣2008-05-16 13:19
楼主 还是要搞清楚  ||   &&是短路运算符 这题就明了了

短路运算符的意思是  前面一个条件不满足,后面的条件就不判断,也不执行了

所以很多运算可以不做
#5
p1s2008-05-16 15:45
《易学C++》第四章的习题啊,晕……
#6
feixian4062008-05-16 18:02
4楼的好像说错了
&&前面的值为0,则结果为0,后面的不做;前面的值为1,那要做后面的,然后判断;
||前面的值为1,则结果为1,后面的不做;前面的值为0,那要做后面的,然后判断。
希望我没说错
#7
p1s2008-05-16 21:42
[bo]以下是引用 [un]feixian406[/un] 在 2008-5-16 18:02 的发言:[/bo]

4楼的好像说错了
&&前面的值为0,则结果为0,后面的不做;前面的值为1,那要做后面的,然后判断;
||前面的值为1,则结果为1,后面的不做;前面的值为0,那要做后面的,然后判断。
希望我没说错 ...

没错,这个就像是乘法的时候在最前面乘了一个0,所以不用判断后面的数字。
#8
忘记喧嚣2008-05-17 14:12
我说的就是前面条件不满足啊...晕 那里错了嘛
#9
rhyme2008-05-17 17:43
因为短路的缘故
||   前面是1则整个式子就是1了
&&  前面是0则整个式子就是0了

最后a=2,m=4,k=4吧

第一个if语句
因为a=8,b=4,所以a!=b为真,整个式子就为真了,进入执行{}中的语句;
2*k=8,!m=0,所以2*k!=!m为真,a=1;
下面经过a=a+a,得到a=2;
第二个if语句
a+b=6,所以a+b>=0为真
m/3.0=2.6667,所以m/3.0>2也为真,所以整个式子为真
!c=0,所以3*!c=0,所以m=k=4;
后面的else不执行
所以最后输出2 4 4
1