亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

c語言基礎習題求解謝謝

c語言基礎習題求解謝謝

C
慕雪6341044 2017-05-16 19:45:16
m--不是應該是先輸出m的當前值再改變m的值嗎為啥不選c main() int m=5; if(m++>5) printf(%dm) else printf(%d,m--)
查看完整描述

3 回答

已采納
?
望遠

TA貢獻1017條經驗 獲得超1032個贊

輸出6,有問題嗎?

查看完整回答
1 反對 回復 2017-05-16
?
onemoo

TA貢獻883條經驗 獲得超454個贊

“m--不是應該是先輸出m的當前值再改變m的值嗎”

不要這么記,因為這句話中的“輸出”是什么意思??? 這可能會使你錯誤地理解自增減表達式的作用。

m++ 表達式的值就是 m 自增前的值,當然這個表達式還會使 m 自增 1

同理,m-- 表達式的值是 m 自減前的值,當然這也會使 m 自減 1。


那么這個代碼中:

  • 一開始,if 中的判斷條件是 m++ 表達式和 5 的大小作比較,m++ 表達式的值就是 5,所以 5 > 5 的結果是 false,故代碼將進入 else 分支。

  • 代碼執行到 else 分支,重要的一點是:這時 m 已經完成了自增,這時 m 的值是 6。

    這里要 print 的是 m-- 表達式的值,同理,m-- 表達式的值還是 6,所以會打印出 6。當然 m 還會被自減 1,所以最終 m 的值會是 5。

注意:我在上面的描述中用了“m++ 表達式的值”和“m 的值”這兩中說法。沒錯,它們是不同的東西! 這個代碼中使用到的分別是 m++ 和 m-- 表達式的值,并沒有直接用 m 的值,所以不要被 m 本身值的增減變化誤導了。


其實我給你之前問題的回答中提到了這些內容,如果你還是不太清楚的話,請看?http://www.xianlaiwan.cn/wenda/detail/350085?中提到的那個詳細解答。

查看完整回答
1 反對 回復 2017-05-19
?
onemoo

TA貢獻883條經驗 獲得超454個贊

對了,我說的格式化是指這樣的效果:

int?main(void)
{
????int?m=5;
????if(m++>5)
????????printf("%d",?m);
????else
????????printf("%d",?m--);
}

這樣比你直接寫代碼要好看多了吧?

而且自帶行號,方便別人給你指出哪行有問題。

查看完整回答
反對 回復 2017-05-19
  • 3 回答
  • 0 關注
  • 1612 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號