1樓:匿名使用者
3全部第一個c程式:
int main()
對應的彙編:
movl $1, %ebx
leal (%ebx,%ebx), %eaxincl %ebx
leal (%eax,%ebx), %esiincl %ebx
incl %ebx
movl %esi, 4(%esp)
movl $lc0, (%esp)
call _printf
第2個c程式:
int main()
對應的彙編:
movl $1, %ebx
incl %ebx
leal (%ebx,%ebx), %esiincl %ebx
movl %esi, 4(%esp)
movl $lc0, (%esp)
call _printf
%esi 在這兩個彙編中的確都是4,為什麼編譯器這麼處理,不知道。
2樓:匿名使用者
(c++)+(c++)+(++c)是1+1+2(d++)+(++d)為2+2;這裡的前置已經加1了前置在當前語句值加1;
後置不加1, 懂?
3樓:匿名使用者
這個,我真看不出兩個式子的結果會相等
我覺得絕大部分編譯器的結果是不相等
編譯器造成的不確定性只在於括號內的幾個式子的計算順序的問題
4樓:匿名使用者
c++是先用c的值 然後再加1 ++c是先把c的值加1 在進行運算 你那個d的話我也搞不明白了 d初始值也是1 如果是(++d)+(d++)我就明白 但是你先後加加d那就是3才對
5樓:紅酒難喝
我覺得是不是這樣啊?編譯器為了使(++d)+(d++)跟(d++)+(++d)的結果一致,所以對於這種演算法就預設成為使(++d)前置,而加法的順序是先左後右,所以(c++)+(c++)+(++c)就先算的(d++)+(d++),得出值後再和(++d)求和,求和時再把(++d)前置。我打亂順序試驗了一下,貌似是這樣
為什麼每次執行rand的結果都一樣
include srand time 0 rand 上述 每秒變一次,如果想每1 1000000秒變一次,加分 在使用rand前加randomize rand函式不是真正的隨機數生成器,而srand 會設定供rand 使用的隨機數種子。如果你在第一次呼叫rand 之前沒有呼叫srand 那麼系統會為...
為什麼我塔羅牌占卜婚姻,每次的結果基本一樣,占卜的都是同我認識的人
信則有不信則無,心就是一種緣分,一種感覺。愛是不需要理由的,走好人生的每一步。你再作幾次占卜,結果都不會相同的。迷信點來說,每次占卜都有先後,先會影響後。科學來說,塔羅牌的主要作用是來自塔羅師。可即是同一個塔羅師作先後,還是會不一樣的。已經註定的結果,你占卜再多次都一樣的 說明你的命運就是那樣了 塔...
用C為什麼43和4030結果不一樣
include int main 編譯輸出 root localhost test makegcc wall g 2.c o 2 root localhost test 24 3 1 4.0 3.0 1 4.0 3.0 1.000000 4 3 1.000000 root localhost tes...