谁帮我看看这个C++程序的运算结果是怎么得来的啊

来源:百度知道 编辑:UC知道 时间:2024/05/31 16:31:34
#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;
}

为什么运行后是:244
a为什么是2啊。。具体怎么运算的。详细过程
a=2*k!=!m ---> a=2*k!=0 怎么的出a=1???不明白 2*k不是2*4=8吗?? a=2*4!=0 为什么会出a=1

我庐山瀑布汗啊。。谁出的这么无聊的题目啊。。。
a=2*k!=!m的具体运算结果是:a=((2*k)!=(!m))这里!m是0,因为m!=0。所以结果是a=1
然后a就是2了。再后面的,a+b>=0 is true. m/3.0, bucause 3.0 is a float, so the result is also a float, 2.666>2 is true.
so m=k+3*(!c), c != 0, so !c = 0; so m = 4.

切换输入法太烦人了,所以我直接用英文了哈
a=8!=0
8!=0为真,转化成int就是1了,这里是先计算不等号的

a=2*k!=!m;
关键是这一句。给它加上括号你就明白了。a=((2*k)!=(!m)); 首先!m结果为0,然后(2*k)!=0 结果为1 ,然后a=1 。
剩下的自己分析吧。