[问题] 关于++运算子的问题

楼主: nikuman (nikuman)   2016-05-28 11:57:43
大家好
小弟最近在自学C语言
有个问题想请问
如果以以下的函式当范例
#include <iostream>
using namespace std;
int main(void)
{int a=9;
cout<< (a=a++)<<endl;
cout<< a
return 0;
}
这样子执行出来的结果两个都是9
想问的点在于 a=a++
++作用完后就不会assign给a了
++的运算顺序不是在=之前吗
是因为什么原因让++运算的结果没办法assign呢
如果我今天想要的效果是
cout之后加一
只能用其他写法了吗
(另外写一个a=a+1之类的)
先谢谢好心人了m(_ _)m
作者: MOONRAKER (㊣牛鹤鳗毛人)   2016-05-28 12:00:00
1: 为什么你会认为++运算顺序在=之前。2: 为什么你会想要写这种(中略500字)的程式。
作者: os653   2016-05-28 12:14:00
置底13戒之8,你那样写结果谁都不知道,没事别把code缩短
作者: loveflames (咕啾咕啾魔法阵)   2016-05-28 12:19:00
除了最基本的四则运算,不要花太多时间研究这个不要去省括号
作者: dces4212 (flawless)   2016-05-28 13:26:00
先++应该要是++a吧?
作者: noodleT (面T)   2016-05-28 16:34:00
a++ 的确会比 = 先执行把 a++ 看作一个函式,a++ 返回值是还没递增时的 a反过来说 ++a 的回传值是递增后的 a
作者: testPtt (测试)   2016-05-28 16:41:00
我是认为最好习惯把a++;做为独立一行step啦
作者: pttuser (pttuser)   2016-05-28 21:25:00
c 有namespace?是我孤陋寡闻还是原po搞不清楚自己学得是什么?
作者: suhorng ( )   2016-05-28 21:39:00
你说的盲点是什么意思? "a=a++"这个程式从头错到尾
作者: Caesar08 (Caesar)   2016-05-28 21:49:00
to pttuser,息怒息怒,分不清楚C与C++的人到处都是
作者: CaptainH (Cannon)   2016-05-29 13:47:00
哪个教授
作者: ronin728 (浪人)   2016-05-29 14:36:00
a = a++ 给不同编译器会有不同答案
作者: hunandy14 (Charlott.HonG)   2016-05-29 18:09:00
a++跟++a都递增,只是前者返回一开始还没+的值
作者: Caesar08 (Caesar)   2016-05-30 10:18:00
他应该是让你们自己去学什么是undefined behavior
作者: itis0423 (co)   2016-05-30 13:45:00
可以听听看刘邦锋教授的

Links booklink

Contact Us: admin [ a t ] ucptt.com