[問題] 兩個C的問題請教 scanf() & Macro

看板Programming作者 (.)時間13年前 (2011/02/12 16:24), 編輯推噓2(206)
留言8則, 4人參與, 最新討論串1/1
1 int main () { char str [80]; int i; printf ("Enter your family name: "); scanf ("%s",str); printf ("Enter your age: "); scanf ("%d",&i); 為什麼讀取的資料是char的時候 寫成str 而非 &str 為什麼讀取的資料是int的時候 就要 &i 不論讀取char 或是 int 應該都從記憶體的地址去取值才對 既然如此 應該兩個都需要&才對吧? 2 #define square(x) x * x main() { int z = 3; printf("%d\n", square(z + 1)); } 為什麼印出來的結果是 7 而不是 16? 感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 69.205.68.125

02/12 17:25, , 1F
pass by value,你寫過函數就知道
02/12 17:25, 1F

02/12 18:02, , 2F
#define square(x) (x * x) 試試就知
02/12 18:02, 2F

02/12 18:02, , 3F
第一個問題:str是char array而不是char
02/12 18:02, 3F

02/12 18:04, , 4F
你可以想想改成 char str; 的差別是什麼
02/12 18:04, 4F

02/12 18:06, , 5F
2相當於printf("%d\n", 3+1 * 3+1);
02/12 18:06, 5F

02/12 18:07, , 6F
先乘除後加減才會冒出7
02/12 18:07, 6F

02/12 18:07, , 7F
改成 #define square(x) (x) * (x) 即可
02/12 18:07, 7F

02/13 06:24, , 8F
感謝
02/13 06:24, 8F
文章代碼(AID): #1DLaE-M6 (Programming)