1樓:匿名使用者
說明編譯器是從表示式右往左進行計算的。可以很負責任的告訴你,如果是自己學c來用,完全不要鑽類似的牛角尖,這是跟編譯器有關的,可能微軟的vc是這個結果,keil的c又是另外一個結果,brolandc又不一樣。所以如此的節省筆墨一來帶來邏輯上的混亂,程式大的話找這種錯誤非常麻煩。
這種東西我感覺就是老師無聊沒事折騰學生用的怪題(學編譯原理的除外)。。。
2樓:
i = (int)a[ptr] + a[++ptr]; //這個語句有二義性,在不同的編譯系統下,結果不相同。樓主沒有必要深究。程式設計不要寫這種不確定的語句,考試就更不會考了。
3樓:小何才露尖尖角兒
我的vc6.0環境裡執行兩次都是32.這可能取決於編譯器,而你的如果是結果是22的話,可能是+運算先計算右邊的值後運算左邊的值。
取決於編譯器。因為你無法知道+運算,編譯器是先計算左邊,還是計算右邊,這可能取決於編譯器,所以,不要寫出取決於編譯器的**。
4樓:匿名使用者
可加q群:186394662
C語言,幫我解釋下這個小程式
scanf在遇到空格時就結束了,所以你輸入的how are you其實只有how被讀進去了。所以長度就是3了。你之前用memset函式的時候,就把a 3 置成0了,然後你輸入的又只有how被讀入,所以此時a 3 還是0嘛。空格是不是就結束了?因為從鍵盤輸入時,scanf遇到空格就認為輸入結束了,所以...
c語言小程式的問題,c語言程式問題
注意標記符號所作用的程式域!其他的都是一些小問題,自己慢慢除錯這執行,相信你能執行成功的。c語言程式問題 c語言中只有傳遞值的一種方式,即使傳遞的是指標,還是指標的值,因此雖然p加了3,但是與pt無關,如果要修改指標形參,則要使用二重指標 include point char pt main pt ...
c語言急求解釋
include int main 求兩個dao數中的較大者的max函式專int max int x,int y 修改的屬地方 1 scanf 輸入四個整數 d d d d a,b,c,d 裡面的輸入四個整數要去掉,這個是標準輸入函式,不具有輸出功能,要是想輸出這樣的提示就在上面加printf 2 i...