精華區beta C_and_CPP 關於我們 聯絡資訊
public class GG { public static void main(String[] args) { int z=-1; System.out.println(++z); System.out.println(z--); ystem.out.println(z++ + z); System.out.println(z + z++); } } #include<stdio.h> #include<stdlib.h> int main() { int z=-1; printf("%d ", ++z); printf("%d ", z--); printf("%d ", z++ + z); printf("%d ", z + z++); system("pause"); return 0; } 以上相信版上的大大都曉得上面是java下面是c 那麼問題來了 為什麼java和c出來的結果不一樣 同樣的寫法為什麼 java會出來 0 0 -1 0 c卻跑出來 0 0 -2 0 為什麼阿~~~~為什麼~~~~~ 各位板大救命阿~~~~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.104.160.134 fishforpt:轉錄至看板 java 02/02 00:36
cjcat2266:是不是因為兩種語言的operator precedence不一樣? 02/02 00:47
y2k27:是哪間公司這麼優秀考這個? 02/02 03:13
y2k27:我猜有side effects發生 結果視平台實作而定 沒有標準答案 02/02 03:13
fishforpt:是學校喔 不是公司 成大資管所 02/02 03:33
> -------------------------------------------------------------------------- < 作者: oohay (五黑) 看板: C_and_CPP 標題: Re: [問題] 面試遇到的一個問題 時間: Sat Feb 2 00:55:46 2008 ※ 引述《fishforpt (游來游去的)》之銘言: Java: : System.out.println(z++ + z); C: : printf("%d ", z++ + z); : 同樣的寫法為什麼 : java會出來 0 0 -1 0 ^^ : c卻跑出來 0 0 -2 0 ^^ 不是operator precedence不一樣. 而是對加號來說,哪邊運算元先取的差異. C並不定義加號的哪個運算元先取值,但Java明定由左邊運算元先取值. -- 鄉民A:灌C可以搞阿嬌啊?
鄉民B:我的Visual C++光碟哪裏去了?
-- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.112.228.219 ※ 編輯: oohay 來自: 59.112.228.219 (02/02 00:56)
oohay:似乎我講的是錯的...囧 02/02 01:14
vvana:簽名檔是對的 02/02 01:21