int a,b; 表达式(a+b)++ 为什么错了?错在哪?

如题所述

第1个回答  2013-04-14
(a+b)返回的结果是左值,而左值都是不能进行修改操作,
比如(a+b) = 5,也会报错

你可以这样修改
int c = (a + b);
c++;

或者
(a+=b)++;本回答被提问者采纳
第2个回答  2013-04-14
(a + b)返回的是一个常量值是不能++的,不仅如此,估计(a)++这样也是不允许的!
第3个回答  2013-04-14
上边定义一个变量i=a+b 然后i++
第4个回答  2013-04-14
你要把(a+b)++ 赋值给谁?

int a,b; 表达式(a+b)++ 为什么错了?错在哪?
int c = (a + b);c++;或者 (a+=b)++;

c语言中,语句int c=(a+b)++;错了吗?原因是什么
错了。因为: ++ 运算,只能用于 可以做 “左值”的变量。这里的 (a+b) 不是左值。假如是: int c= (a++) + (b++); \/\/ a 和 b 都是可做左值的,用 ++ 就可以。假如是: int c= (a++) + (++b); 也可以。

在C语言中(a+b)++这么表达合法吗?
不合法的,望采纳!因为++只能给单一变量数值+1,不能用于多变量的复合表达式赋值,你写成(a++) + (b++)都没有问题。对于(a+b)++,编译器在把a+b的和做完以后,准备让电脑把++给谁加呢?

int a=a+b=b++;为什麽出错
第一步明显错了,赋值表达式要求左边的操作对象是一个可寻址的,a+b不可寻址。书上的 int a = b = c; 之所以成立是因为这样的:b = c;a = (b = c);"b = c"是个赋值*表达式*,表达式就是类似"a+b","a-b"之类的有结果的式子,因此可以赋给a ...

C语言中若 double a,b 则表达式a=a+b=b++为什么错?
a+b不是左值,所以不能作为左值对它进行赋值,即a+b=b++是错误的。

C语言 里为什么不能 (a++)++
因为++操作符的对象是可修改的左值,就好象 a += 1一样,是可以赋值的变量,但是a++本身是一个表达式,是一个右值(比如a += 1中的1),不可修改,所以(a++)++试图改变一个非变量的值,编译后会出错

设a,b都是int型变量,且a、b的初始值都是5和10,则表达式a=a+b++,b+...
整个表达式的值的话其实就是最后一项的值,也就是b+1,而b在之前进行过一次++运算,所以表达式的结果应该是b的初始值加2

C语言!!!a[b++]和a[b]++的区别
++a: 先将a进行++处理,再将a的值代入表达式。注意对于a++这里有一个“在表达式运算完毕后,再将a进行++处理”。b=(a++); 这是一个赋值表达式,所以先将a的值代入表达式,必须等到赋值表达式运算完毕后,再将a进行++处理。也就是说必须等到给b赋值完毕后,才将a进行++处理。所以b=3,a=4 ...

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

关于a+++b的问题~~
首先(a++)+b 和a+++b俩个表达式概念是一样的,是一个意思 a++,++在后面的时候,先保留a的运算,a全部运算完后a才自加 对于这个题目,a++,此时a=1,不做运算 下一个字符是b没有模块运算 这时所有的表达式结束 a为1,b为2,输出结果为3 此时才开始计算表达式中的a++ 然后a变为2 最后的...

相似回答