第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

標題: 3-3 自增與自減運算符 這節(jié)課我來來回回想了很多次,也看了很多問答題,但都不太好,請各位解答下我心中的疑惑

這是他的說明:

無論是a++還是++a都等同于a=a+1,在表達式執(zhí)行完畢后a的值都自增了1,

?無論是a--還是--a都等同于a=a-1,在表達式執(zhí)行完畢后a的值都自減少1。

我理解的意思有兩種意思: ?定義一個變量 int a=1;

1: ? ??a++ ?或 ?++a ?,運算后a的最終結(jié)果是一樣的,a都等于2 ? ??

? ? ? ? 而a-- ?或 ? --a,,運算后a的最終結(jié)果是一樣的,a都等于0

2: ?也就是說 ?a++ ?或 ?++a ,a-- ?或 ? --a, 都有多余的一個。

?關(guān)鍵是事實不是這樣的,我想不通,按照它的說明我這樣理解哪里不對?

我想不通,所以這節(jié)課我來來回回想了很多次,也看了很多問答題,但都不太好


正在回答

2 回答

  1. 你所描述的理解是對的。在語句結(jié)束后a確實都自增/自減了。

  2. 當然不是多余的啦。關(guān)鍵區(qū)別就在于這個前置自增和后置自增表達式本身的值上。

關(guān)于上面的第2點,解答如下:

通常說,a++是先取值后運算,++a是先運算后取值。實際上這里涉及“運算符”、“表達式”的概念。

++ 是一個“自增運算符”,自增運算符有兩種形式:前置自增(++a)后置自增(a++)。

運算符操作數(shù)合起來就是一個表達式(a++、++a都是表達式,a就是操作數(shù))。注意:每一個表達式本身都有值(和其類型),有的表達式還有“副作用”。比如自增表達式的副作用就是使其操作數(shù)自增1。那么自增運算表達式的值是什么呢??a++ 的值就是 a 的值,而 ++a 的值等于 a+1。?

所以,如果有這樣的代碼 i = a++;? 你可以認為:i?獲得的是a++這個表達式的值(也就是a當時的值),a++表達式的副作用再將a自增。 同理 i = ++a; 這里?i?獲得的是++a表達式的值(就是a自增后的值)。


還有一個關(guān)鍵的內(nèi)容,雖然你的問題中沒有體現(xiàn)出來。那就是:前面說使操作數(shù)自增1是自增表達式的副作用,那么這個副作用什么時候發(fā)生呢? 準確地說是在“序列點”后保證會發(fā)生。 序列點這個概念比較復雜,代碼中的很多地方算是序列點,簡單地說:你先記住“語句結(jié)束時”是一個序列點。這序列點之前的運算符的副作用,在執(zhí)行到這點以后都保證會發(fā)生。注意并不是在這一點之后就突然發(fā)生的,這些副作用可能在序列點前的任何一個位置發(fā)生,C標準只是規(guī)定在序列點之后這些副作用必須已經(jīng)發(fā)生了。?這一點非常關(guān)鍵,本站的課程中并沒有講解,甚至本站的題目在這一點上還出現(xiàn)了大量的錯誤!(我強烈懷疑講師都不明白這點...)


1 回復 有任何疑惑可以回復我~

onemoo : ? 請幫我看一看,我從你給的答案中有所領(lǐng)悟,下圖是我的理解你幫忙看下是否是正確的,還有解疑和糾正

http://img1.sycdn.imooc.com//55ee84b20001277e09880421.jpg

2 回復 有任何疑惑可以回復我~
#1

onemoo

前4個printf分析得很對。 第5個printf中:符號a始終就代表那一個變量。變量的值本來就是可以變化的嘛,a在第4行中被初始化為100,之后a的值就隨著代碼流程而變化(自增/自減),在這次printf調(diào)用前a的值恰好又變回了100。而這次打印的是“a+1表達式”的值,所以打印出101,這不會影響變量a自身的值(加法表達式?jīng)]有副作用)。與其說a取到的是“上一次a的值”,不如說這就是a當前的值。 最后一個打印的還是a當前的值,自然還是100了。
2015-09-09 回復 有任何疑惑可以回復我~
#2

貳到極限 提問者 回復 onemoo

這就是你所說的副作用嗎? 這種副作用只存在于 自增與自減(本節(jié)中) 中,一旦被打斷或被隔開就要重新被賦值。 這樣說你可能聽不太明白我所要表達的意思。我取個例子吧,還是上面這張圖來說: 我在第17行中,加入一段代碼: int a = 80; 那么第18行代碼的輸出結(jié)果是:a=81, 那第19行的代碼輸出結(jié)果就應該是: a=81, 而22行:a=81, 25行:a = 80 . 你看我的理解對嗎?他的副作用一旦被打斷就要重新 選值。。。
2015-09-09 回復 有任何疑惑可以回復我~
#3

onemoo 回復 貳到極限 提問者

如果在17行重新將a賦值為80。那么在18行會打印出79,并且18行執(zhí)行之后a的值也自減為79。19行會打印出79,a會減為78。在22行會打印出79,a的值還是78。 你是不是把18/19行看成自增了?! 還有,沒有什么“副作用被打斷”之說,18/19行代碼執(zhí)行后,對a的副作用肯定就生效了,a的值就是相應的自增/自減了。
2015-09-10 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
C語言入門
  • 參與學習       926928    人
  • 解答問題       21533    個

C語言入門視頻教程,帶你進入編程世界的必修課-C語言

進入課程

標題: 3-3 自增與自減運算符 這節(jié)課我來來回回想了很多次,也看了很多問答題,但都不太好,請各位解答下我心中的疑惑

我要回答 關(guān)注問題
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號