设int a=1,b=2;则执行a=b+2,a++,a+b;后a和b的值分别是多少

如题所述

楼主你好。


a和b的值分别为5和2。

其实没什么特别的,就是先执行a=b+2让a变成4,然后执行a++让a变成5,最后执行a+b不会影响任何变量,所以最终a为5,b为2。


测试代码:

#include <stdio.h>

void main(){

int a=1,b=2;

a=b+2,a++,a+b;

printf("a=%d b=%d\n",a,b);

}


运行结果:

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-12-26
楼主你好,上面的代码,
a=b+2, a++, a+b;
可以理解为:
a = b + 2; // 这时候 a = 4, b = 2
a++; // a = 5, b = 2
a+b; // a = 5, b = 2
所以最后是a = 5, b = 2。
第2个回答  2012-12-26
main()
{
int a=1,b=2;
a=b+2,a++,a+b;
printf("%d\n%d",a,b);
}
一个是5(a)
一个是2 (b)

设int a=1,b=2;则执行a=b+2,a++,a+b;后a和b的值分别是多少
a和b的值分别为5和2。其实没什么特别的,就是先执行a=b+2让a变成4,然后执行a++让a变成5,最后执行a+b不会影响任何变量,所以最终a为5,b为2。测试代码:include <stdio.h> void main(){ int a=1,b=2;a=b+2,a++,a+b;printf("a=%d b=%d\\n",a,b);} 运行结果:...

设int a=1,b=2;则执行a=b+2,a++,a+b
int a=1,b=2 ;a=1,b=2 a=b+2 ;a=2+2=4 a++ ;先引用a的值,再把a加1 a+b ;如果前面的是“;”则a+b=a+++b=4+1+2=7 如果前边的不是“;”则a+b=4+2=7,在来a++。a最后的值是5

int a=1,b=2,c=3; 执行表达式(a=b+c)||(++b)后a,b,c的值分别是...
a = b + c 这句已经是真(TRUE)了,所以,++b 就不执行了,b 的值还是 2

int a=1,b=2;a++;b++;printf("%d%d",a++,++b);分别写出运行之后a,b的...
解释:当执行完 int a=1,b=2;a++;b++; 之后,a = 2,b=3 当执行 printf("%d%d",a++,++b); 由于 a++ 是先赋值再自加,因此a++ 为2,执行之后 a等于3 ++b 是先自加,再赋值,所以 ++b 为4,b 为 4

若有定义int a=1,b=2;,执行语句a++>=b&&b++; 之后,变量a和b的值分别...
因为编译器在判断a++>=b 是逻辑假后就不会再计算后面的b++了 因为逻辑假与逻辑真或逻辑假相与都是逻辑假所以就不会计算了。

设变量int a=1,b=2;则执行表达式a+=3,b-2,++b,a*=b后变量a和别的...
逗号表达式的运算过程为:从左往右逐个计算表达式 a+=3,\/\/相当于a=a+3,a=4,b=2 b-2,\/\/a=4,b=2 ++b,\/\/a=4,b=3 a*=b\/\/相当于a=a*b,a=12,b=3 所以a的值为12,b的值为3

int a=1,b=2;执行c=a++||b++;语句后变量b的值是
b=2;||运算从左到右,但只要左边的值非0,那么整个表达式的值就是1,||右边就不再运行 由于 int a=1,所以 c=a++ || b++;相当于 c=(a++)||(b++);所以||左边非0,所以b++不运算,所以b就是原值2 运行结果:

int a=1,b=2 . a>b?a++:b++ 最后结果a和b的值
a=1 b=3 "? :"意思就是说满足">"就运行冒号前的内容,否则就运行冒号后面的句子。

int a=1,b=2; 那么表达式(a++)+(++b) 的值是:
a++是先使用a的值,然后再改变a的值。++b是先改变b的值加1,然后再使用b的值。结果为 1+3 =4

若有定义 int a=1,b=2; 那么表达式(a++)+(++b) 的值是?
(a++)表达式会先调用a的值,为1.然后a自加1;(++b)b先自加1,变成3,然后再被表达式调用。所以答案是:1+3=4 总结下:a++:先用再变 ++a:先变再用

相似回答