#1
|
||||
|
||||
有關遞增的值的問題
第一個是基本的遞增函數,如果使用者輸入6,則因為x++,輸出的答案是7:
#include <stdio.h> int main(void) { int x; printf("enter a number: \n"); scanf("%d",&x); x=x++; printf("%d",x); return 0; } 但改成如下比較複雜的程式碼,算出來之後,本來是預期如果使用者輸入6,因為x++,答案會是7,但結果輸出的答案還是6? #include <stdio.h> int func(int x); int main(void) { int y,z; printf("enter a number: \n"); scanf("%d",&y); z=func(y); printf("%d",z); return 0; } int func(int x) { x++;/*非常奇怪的是,這裡無論改什成什麼,例如x=x+1 x=x*2 x=x-2 答案全是原先輸入的那個數字6,也就是說,這個x值傳回去還是原值。但唯有一個例外,就是x=x/2,除數,則它會有改變,例如輸入6,則本程式出來的答案就是3。怎會這樣?*/ } |
#2
|
|||
|
|||
func 最後要加上 return x;
|
#4
|
|||
|
|||
你沒指定回傳值, 則 z 的值將是『不確定』的,
你得到的所謂"正確值", 其實是恰好而已 使用別的編譯器, 或使用不同的編譯選項, 都可能得到不同的結果 |