[問題] 關於++運算子的問題

作者: 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