i 4 j 3 k 1,為什麼kii printf k d n nk輸出 k

時間 2021-08-11 17:10:44

1樓:匿名使用者

k=i/++i;,按符號的優先順序,先計算++i,這時,i=5,再計算k=i/++i,分子分母都是5,所以答案是1

2樓:匿名使用者

這個和求值循序有關

c語法沒有規定運算子求值循序(除逗號運算子,邏輯運算子,條件運算子外),求值循序不同的編譯器是不一定相同的

所以表示式a+b,可以理解為a加上b,也可以理解為b加上a,一般情況下,兩者的結果是相同的,

但是如果是a+(++a),這種情況就會不同,比如說a初始值為0的話,理解為a加上++a的話,結果就是0+1=1 但是如果理解為(++a)加上a的話,就成了1+1=2

而lz使用的編譯器,正好是後者,所以理解為先++i然後 i / (++i)的結果

也就是2/2=1

總之這種東西是語法上未定義的東西,千萬不要寫這樣的**,這樣會降低移植性的,這樣的題一般也就會在一些nc的學校考題裡出現,我記得幾年前的ncre裡也出現過,這種nc題不做也罷,沒必要弄清

3樓:匿名使用者

當然是1

請問4/4不是1是什麼?

只是1樓說的對,不同編譯器可能答案不一樣。

4樓:騎士燕

我估計你的題目抄錯了吧,只有k=i/++j,k的結果才等於1,如果題目沒錯,那麼你的j是用來幹什麼的?

5樓:匿名使用者

在實際的開發中,要儘量避免這種寫法。不同的編譯器處理方式可能不同,是先計算分子,還是分母。

6樓:

k怎麼會輸出1?這個應該是0才對啊。。。

7樓:匿名使用者

k=i/++i最好分開寫,不要又歧義。否則不同編譯器,或編譯器開不同優化選項,結果都可能不同的。

8樓:匿名使用者

可能運算方向從右開始的吧,不然k=i/i++ 也等於1呢

c語言程式 i 3,k(iii為什麼k

仙戈雅 樓上的兄弟都已分析過了,如果你學過資料結構中的棧就會學逆波蘭演算法。這道題就是典型的逆波蘭問題。這先是執行i i i 3 3 3 9 最後執行了3次i 第一次i 4 第二次i 5 第三次i 6 這是i 和 i的區別。舉個例子吧 x 1 y 0 y x 那麼y 1 同樣 x 1 y 0 y x...

請問為什麼我覺得只能輸出三行啊,i 0,j 1時根本不能輸出,其他的選項也有問題,求詳解

i 0時,不輸出 i 1,j 1時,輸出 s 1 1 ni 2,j 1時,輸出 s 2 1 ni 2,j 2時,輸出 s 2 2 ni 3,j 1時,輸出 s 3 1 ni 3,j 2時,輸出 s 3 2 ni 3,j 3時,輸出 s 3 3 n總共輸出六行,你應該忘了計算,第二個對於j的迴圈了 i...

複數 1減根號3i 的5次方分之 2加2i 的4次方?急

1 根號3 i 過程 2 2i 2 根號2 45 它的四次方就是64 180 1 根號3 i 2 60 它的五次方就是32 300 所以原式等於 32 300 分之 64 180 也就是等於2 120 就是2 cos120 2 sin120 i 1 根號3 i 安克魯 2 2i 2 1 i 16 1...