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

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

希望能夠幫幫我,不難,很基礎(chǔ)

希望能夠幫幫我,不難,很基礎(chǔ)

C++ C
XAGT 2017-10-24 12:46:08
有如下:#include<stdio.h> main() { int j=3; printf("%d\n%d",++j,j++); printf("\n%d\n%d",j++,++j); } 为什么会输出5  3                          6  7 呢,这个是这样分的,按照++和--的,不是应该输出 吗                4  4                          4   5
查看完整描述

2 回答

已采納
?
onemoo

TA貢獻(xiàn)883條經(jīng)驗(yàn) 獲得超454個贊

printf("%d\n%d",++j,j++);? 這樣的代碼的行為是“未定義的”

自增/減運(yùn)算符構(gòu)成的表達(dá)式,對操作數(shù)的自增/減算是表達(dá)式的“副作用”,這副作用并不保證和表達(dá)式求值同時發(fā)生

以你這個函數(shù)調(diào)用是參數(shù)求值為例。函數(shù)的兩個參數(shù)都是自增表達(dá)式。那么 ,是++j 先算還是 j++ 先算呢? 答案是:不確定!? 而且關(guān)鍵是這兩個自增表達(dá)式還是對同一個變量自增的,那么 ++j 中的 j 會在 j++ 之前自增嗎? 還是別的情況?? 答案也是:不確定!? 所以這句 printf 打印出什么都有可能。


像自增這樣有副作用的表達(dá)式,如果你不確定它的副作用的發(fā)生順序,那最好一句中只用一個這樣的表達(dá)式。

比如像 @xungeer29 說的那樣分開寫,就能得到確定的結(jié)果了。

查看完整回答
2 反對 回復(fù) 2017-10-24
?
xungeer29

TA貢獻(xiàn)46條經(jīng)驗(yàn) 獲得超20個贊

你輸出
printf("%d\n",++j);
printf("%d\n",j++);
printf("%d\n",j++);
printf("%d\n",++j);
試試,4457


查看完整回答
1 反對 回復(fù) 2017-10-24
  • XAGT
    XAGT
    合起來就輸出不行了嗎,像printf("%d\n%d",a,b); 這樣的可以輸出a,b的值,那個++合在一起輸出就不行
  • 2 回答
  • 0 關(guān)注
  • 2128 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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