c++简单的一些问题

来源:百度知道 编辑:UC知道 时间:2024/05/27 08:36:58
1.若整型变量a,b,c,d,m,n的值均为1,表达式(m=a>b)&&(n=c<d)运算后,m,n的值是? 0,1 为什么啊 我觉得都是0
2.执行下面语句后,输出结果为
int a=010,b=10;cout<<++a<<','<<b--<<endl;
3.下列程序输出结果为
#include<iostream.h>
void main()
{
int i=3,j=2,a,b,c;
a=(--i==j++)?--i:++j;
b=i++;
c=j;
cout<<a<<','<<b<<','<<c<<endl;
}
要有结果,最重要的是要解释为什么啊 谢了 快考试了 还不怎么会呢

(1)表达式(m=a>b)&&(n=c<d)运算后,
m=0,n=1.
---分析:因为,&&是所谓“骤死”法规则,就是说它如果判断出(m=a>b)为假,就不再进行后面的运算了,因为无论后面的为什么都不会影响结果。所以,实际上(n=c<d)没有得到运算,当然n=1;

(2)int a=010,b=10;cout<<++a<<','<<b--<<endl;
----分析:“010”--用“0”开头表示8进制,"++a"表示先运算再使用。"b--"表示先使用再对b进行运算。
所以输出是:9,10

(3)输出结果:1,1,3
----分析:
#include<iostream.h>
void main()
{
int i=3,j=2,a,b,c;
a=(--i==j++)?--i:++j; //先运算(--i==j++),因为--i,是先运算再使用所以i=2.j++是先使用再运算所以就是j=2.那么是“==”想等的,选择“--i”。而此时i又是先运算再使用,所以i=1了。那赋给a当然是1了。
b=i++; //此i是先用再运算,当然还是1.
c=j; //因为上面的":"后面的"++j"没得到运行,所以j是3.
cout<<a<<','<<b<<','<<c<<endl;
}

完毕。

第一个 我也觉得答案有问题,不管怎么样,m,n的值都应该是一样的
第二题 cout<<++a 是标识先执行a=a+1,在执行cout<<a,此时a应该是11,相反b--是说先执行cout<<b, 在执行b=b-1,所以输出的b还是原来的值,最后就应该是11,10
第三题 a= A ? B : C 这个表达式的意思是如果A