這是因爲你的scanf語句。 通常,scanf函數語句具有這種格式:
scanf("%d %d",&x,&y); //without the commas inside the ""'s
但是你做出這種格式:
scanf("%d,%d",&x,&y); //with the commas inside the ""'s
這意味着你需要在兩個輸入端之間的逗號分隔符。
請看下面的試驗
TRIAL1:(注:輸入2345)
Please input 2 numbers:
2345
Now the value for x is 2345, and value for y is 134513867.
TRIAL2:(注:輸入23,45)
Please input 2 numbers:
23,45
Now the value for x is 23, and the value for y is 45.
TRIAL3 :(注意:輸入是23 + 45)
Please input 2 numbers:
23+45
Now the value for x is 23, and the value for y is 134513867.
所以,根據該試驗中,的scanf( 「%d,%d」,&的x,& y)基要求輸入具有逗號分隔符。第一次和第三次試驗的輸出結果是,y變量確實包含垃圾,因爲這些y值保持不變/未初始化。但似乎由於scanf上的第一個%d,x變量得到了正確的值。
你爲什麼要返回'1'?這意味着失敗。 – Jack 2012-07-09 20:43:51
這是未定義的行爲。但是scanf可能正在讀取從堆棧頂部存儲在y中的值。 – jn1kk 2012-07-09 20:44:12
在調用'scanf()'之前''''''''''''和'y'有未定義的值。將它們設置爲'0'或'-1'或任何其他_ known_值,然後查看調用scanf()後會發生什麼。 – 2012-07-09 20:48:37