2014-09-23 120 views
0
char inputvalue=7; 
char zerovalue=0; 

while(inputvalue != zerovalue) 
{ 
    scanf (" %c",&inputvalue); 
    printf("%c\n",inputvalue); 

} 

爲什麼我輸入0後不會中止循環?爲什麼我輸入0之後我的while循環中止?

謝謝你的回答。問題部分b: 如何解決這個問題,所以它會按預期工作?

char inputvalue[100]='48'; 
char zerovalue[100]='0'; 

while(inputvalue != zerovalue) 
{ 
    scanf (" %c",&inputvalue); 
    printf("%c\n",inputvalue); 

} 
+0

你拿'char'類型比較'int'?比較'char'使用'0'或'48'。 – 2014-09-23 04:29:32

+5

由於「0」的ASCII值是48,而不是0. – user3386109 2014-09-23 04:29:52

+0

它可能是主要空間:「%c」 – 2014-09-23 04:31:52

回答

5

變化

char zerovalue=0; 

char zerovalue = '0'; // 0 != '0' 
+0

說明:'0'是數字值0,通常用於終止字符串,而'0'是看起來像0的字符。''0'通常具有數字值'48',就我而言記住,這不等於'0'! – Sam 2014-09-23 04:31:03

1

您正在進入的字符 '0',這是不一樣的整數0

'0' 是在ASCII字符集的中間。

0

注意,這個答案跟隨編輯的問題(B部分)

我不知道爲什麼你突然宣佈char使他能char[100]秒。

ASCII 0或者是(char) 48(char) '0''48'

下工作(和編譯)

#include <stdio.h> 

int main() 
{ 
    char inputvalue = 0;    //initialised to 0, just so no undefined behaviour can happen 
    char zerovalue = '0';   //this is ASCII '0' (== 48) 

    while(inputvalue != zerovalue) 
    { 
     scanf (" %c",&inputvalue); 
     printf("%c\n",inputvalue); 
    } 
} 
相關問題