35. 若有定义:int a,b;则表达式(a=2,b=5,a*2,b++,a+b)的值是( )。
A. 7
B. 8
C. 9
D. 10
答案是什么啊,求解析 展开
若有定义:int a,b;则表达式(a=2,b=5,a*2,b++,a+b)的值是8。
b++的运算结果是b=5+1=6,然后运算a+b--,因b--是先调用变量b,再进行自减运算,所以是先计算a+b=2+6=8,然后计算b--,即b=b-1=5。所以“a+b--”最后的结果就是8,其中b的值变为5。
扩展资料:
在一般的电脑中,int占用4字节,32比特,数据范围为-2147483648~2147483647[-2^31~2^31-1];
在之前的微型机中,int占用2字节,16比特,数据范围为-32768~32767[-2^15~2^15-1];
使用printf输出int占用字节数量:
printf("%d",sizeof(int));
除了int类型之外,还有short、long、long long类型可以表示整数。
unsigned int 表示无符号整数,数据范围为[0~2^32-1]。
选择B
整体为逗号表达式,逗号表达式的值由最末项决定,即a+b
a=2,b=5这两个子表达式分别将ab赋值为2和5
a*2子表达式没有任何副作用.不改变a的值
b++将b值自增1,成为6
所以2+6==8
或:
逗号表达式从左向右依次计算,最终的值等于最后一个表达式的值。因此a=2,b=5,b++=6,a+b=2+6=8,最终值为8。
扩展资料:
一个表达式的赋值和算符的定义以及数值的定义域是有关联的。
两个表达式若被说是等值的,表示对于自由变量任意的定值,两个表达式都会有相同的输出,即它们代表同一个函数。
一个表达式必须是合式的。亦即,其每个算符都必须有正确的输入数量,在正确的地方。如表达式2+3便是合式的;而表达式*2+则不是合式的,至少不是算术的一般标记方式。
参考资料来源:百度百科-表达式
整体为逗号表达式,逗号表达式的值由最末项决定,即a+b
a=2,b=5这两个子表达式分别将ab赋值为2和5
a*2子表达式没有任何副作用.不改变a的值
b++将b值自增1,成为6
所以2+6==8
可是b++不是++在后吗,那不是应该先算后+吗?为什么这里又变成6
逗号运算符是顺序点,所以尽管子表达式b++的值为b的原值5,但后续计算a+b的时候自增的副作用已发生,b值为6
因此a=2,b=5,b++=6,a+b=2+6=8,最终值为8。
可是b++不是++在后吗,那不是应该先算后+吗?为什么这里又变成6
额,++在前就先增,++在后等语句结束再增。