課程
/后端開發(fā)
/C
/C語言入門
我不太明白下面的結(jié)果是怎么算出來的(自增自減運算)
2016-11-20
源自:C語言入門 3-3
正在回答
在前面的回答中找到的正確的回答
通常說,a++是先取值后運算,++a是先運算后取值。實際上這里涉及好幾個基本概念!?先確定你清楚“運算符”、“表達式”和“語句”的概念:
++ 是一個“自增運算符”,自增運算符有兩種形式:前綴自增(++a)和后綴自增(a++)。
運算符和操作數(shù)合起來就是一個表達式(a++、++a都是表達式,a就是操作數(shù))。注意:每一個表達式本身都有值(和其類型),有的表達式還有“副作用”。比如自增表達式的副作用就是使其操作數(shù)自增1。那么自增運算表達式的值是什么呢? a++ 的值就是 a 的值,而 ++a 的值等于 a+1。?
表達式后面加上一個分號才是一個完整的“語句”。
還有一個關鍵內(nèi)容:前面說使操作數(shù)自增1是自增表達式的副作用,那么這個副作用什么時候發(fā)生呢? 準確地說是在“序列點”后保證會發(fā)生。 序列點這個概念比較復雜,對于例題中這個簡單的情況,你只需要知道:在本語句結(jié)束后,這些副作用肯定發(fā)生了。
下面講解下3-3的例題:
int a = 100; 最開始時a是100。
打印 a++; ?這個printf會打印a++的值,注意是a++表達式的值,看我前面的講解,a++的值就是a的值,也就是100。 別忘了這語句結(jié)束后a的值就會自增1(也就是副作用發(fā)生了)。
打印 ++a; ?目前a的值為101。現(xiàn)在要打印++a表達式的值,++a的值就等于a+1,所以會打印出102。 此語句后a=101+1=102。
打印 --a; ?這次要打印--a表達式的值,同自增一個道理,--a的值等于a-1,所以會打印出101。 此語句后a=102-1=101。
打印 a--; ?a--表達式的值就是a的值,所以打印出101。 此語句后a=101-1=100。
打印 a+1; ?這表達式與自增無關,只是打印a+1的值,就是101。 對a本身的值沒有影響(加法表達式?jīng)]有副作用)。
打印 a; ?這時a的值當然還是100了。
安小瞳 提問者
爲了自己的時間奮鬥
剛開始a=100,第一個printf時先輸出a=100然后給a自增,此時a=101,第二個printf時先給a自增,此時a=102然后輸出a=102,
第三個printf時先給a自減,此時a=101然后輸出a=101,
第四個printf時先輸出a=101,然后a自減,此時a=100,
第五個printf時直接輸出a+1=101,但是沒有改變a的值,所以此時a還是為100,
第六個printf時直接輸出a=100;
qq_xiaopiaor_04013783
King丶賓 回復 qq_xiaopiaor_04013783
舉報
C語言入門視頻教程,帶你進入編程世界的必修課-C語言
3 回答自增自減是怎么運算的?
3 回答自增自減的運算結(jié)果 有點不懂
3 回答自增自減是怎么算的?
4 回答自增自減運算
3 回答自增和自減的運算
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學習伙伴
掃描二維碼關注慕課網(wǎng)微信公眾號
2016-11-20
在前面的回答中找到的正確的回答
通常說,a++是先取值后運算,++a是先運算后取值。實際上這里涉及好幾個基本概念!?先確定你清楚“運算符”、“表達式”和“語句”的概念:
++ 是一個“自增運算符”,自增運算符有兩種形式:前綴自增(++a)和后綴自增(a++)。
運算符和操作數(shù)合起來就是一個表達式(a++、++a都是表達式,a就是操作數(shù))。注意:每一個表達式本身都有值(和其類型),有的表達式還有“副作用”。比如自增表達式的副作用就是使其操作數(shù)自增1。那么自增運算表達式的值是什么呢? a++ 的值就是 a 的值,而 ++a 的值等于 a+1。?
表達式后面加上一個分號才是一個完整的“語句”。
還有一個關鍵內(nèi)容:前面說使操作數(shù)自增1是自增表達式的副作用,那么這個副作用什么時候發(fā)生呢? 準確地說是在“序列點”后保證會發(fā)生。 序列點這個概念比較復雜,對于例題中這個簡單的情況,你只需要知道:在本語句結(jié)束后,這些副作用肯定發(fā)生了。
下面講解下3-3的例題:
int a = 100; 最開始時a是100。
打印 a++; ?這個printf會打印a++的值,注意是a++表達式的值,看我前面的講解,a++的值就是a的值,也就是100。 別忘了這語句結(jié)束后a的值就會自增1(也就是副作用發(fā)生了)。
打印 ++a; ?目前a的值為101。現(xiàn)在要打印++a表達式的值,++a的值就等于a+1,所以會打印出102。 此語句后a=101+1=102。
打印 --a; ?這次要打印--a表達式的值,同自增一個道理,--a的值等于a-1,所以會打印出101。 此語句后a=102-1=101。
打印 a--; ?a--表達式的值就是a的值,所以打印出101。 此語句后a=101-1=100。
打印 a+1; ?這表達式與自增無關,只是打印a+1的值,就是101。 對a本身的值沒有影響(加法表達式?jīng)]有副作用)。
打印 a; ?這時a的值當然還是100了。
2016-11-20
剛開始a=100,第一個printf時先輸出a=100然后給a自增,此時a=101,
第二個printf時先給a自增,此時a=102然后輸出a=102,
第三個printf時先給a自減,此時a=101然后輸出a=101,
第四個printf時先輸出a=101,然后a自減,此時a=100,
第五個printf時直接輸出a+1=101,但是沒有改變a的值,所以此時a還是為100,
第六個printf時直接輸出a=100;