我用 C 語言撰寫了一個簡單的 sum() 函式,帶有兩個整數型別的引數。但是,在 main 中呼叫函式時,我傳遞了 char 型別的變數。問題是我無法理解程式的輸出。以下是代碼:
void sum(int x,int y)
{
printf(" x=%d y=%d\n",x,y);
printf("%d",x y);
}
void main()
{
char a,b,add;
printf("Enter two values: ");
scanf("%c%c",&a,&b);
sum(a,b); //calling
}
如果我輸入 a=A 和 b=A 那么它應該給我添加 A 的 ASCII 值,即 130,但它給了我 97。當我嘗試列印 x 和 y 的值時,它會列印 x=65 y=32。我不明白為什么它在 y 中存盤 32?有人可以解釋一下嗎。
uj5u.com熱心網友回復:
這是因為您的輸入是A A,即A<spacebar>A。scanf("%c%c",&a,&b)恰好讀取兩個字符A和<spacebar>,結果 x = 65( ) A, y= 32( <spacebar>)。如果您想獲得預期的輸出,您的輸入應該是AA.
uj5u.com熱心網友回復:
似乎您正在提供輸入A A而不是AA. 對于前者,x 存盤65和 y 存盤32為 space 的 ASCII 值32。
uj5u.com熱心網友回復:
如果要將 124abc 存盤在整數變數中,則它將僅存盤 124。并且在字符常量/變數的定義中,它可以保存所有 ASCII 255 字符,其中還包括空格(空格鍵)、制表符(制表符鍵)、換行符(輸入鑰匙)。因此,當您運行代碼并且螢屏顯示“輸入兩個值:”時。您鍵入存盤在變數“a”中的“A”。現在你按下空格鍵,它也是一個字符常量,其值為 ASCII 32 存盤到變數“b”中。所以避免這種情況,你應該在 %c 之前放一個空格,這樣它就不會讀取輸入鍵或空格鍵。或者使用 fflush(stdin) 函式。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/424861.html
上一篇:以水平格式獲取表頭|PLSQL|
