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...