几道简单的c++题,高手帮忙

来源:百度知道 编辑:UC知道 时间:2024/06/30 13:44:57
计算下面表达式的值。假设a、b为整型,a等于5,b等于4
(1) 4*a>6+b
(2) 7>5||30==a*b||a>40
(3) a>=b&&b*2==a+3&&a<0&&a*a+b*b>a*b+b*a
(4) !a>b&&b<20||a>0
(5) (a+=4,2*++b),(a+b)%2

回答者:Zhōu光 - 试用期 一级 9-26 19:46 错了
在vc6.0下编译通过

a=5;
b=4;

(1) 4*a>6+b //1;
(2) 7>5||30==a*b||a>40 //1
(3) a>=b&&b*2==a+3&&a<0&&a*a+b*b>a*b+b*a //0
(4) !a>b&&b<20||a>0 //1
(5) (a+=4,2*++b),(a+b)%2 //10

true 先算术运算
true 7>5true,以后被屏蔽
false b*2==a+3false ,以后被屏蔽
false !a>bfalse,以后被屏蔽
看不懂

(1)4
/*先计算a>6,等于0,再计算a*0+b,所以答案为4*/
(2)1
/*先计算7>5,等于1,因为“||”再后才计算,因此不用看,所以答案为1*/
(3)0
/*因为“&&”再后才计算,又因为a<0等于0,所以答案为0*/
(4)1
/*因为”&&”比"||"优先级别高,因此"||"最后才计算,又因为a>0等于1,所以答案为1*/
(5)0
/*经过a+=4,2*++b后,a的值变为9,b的值为5,所以(a+b)%2是等于0*/

回答者:rebinglunlun - 举人 四级 9-26 20:11
我想你是这样编译的吧!但是这样的话又是另一种解释.

mani()
{
int a,b;
a=5,b=4;
printf("%d\n",4*a>6+b);
printf("%d\n",7>5||30==a*b||a>40);
.........................;