2013-04-07 111 views
0

我的程序有點問題。在我的IF聲明中,我的變量沒有被識別。if語句中無法識別的變量

for(i=1;i<10;i++){ 
    printf("%d:", i); 

     for(j=0;pom[j]!='\0';j++){ 
       if(pom[j]==X) star++; 
     } 
    X++; 
    printf("%d", star); 
    printf("\n"); 
    star=0; 
} 

變量X在此函數中定義爲int X=0;。它應該是一個從1到9的數字,但它不會在代碼中改變它的值,即使我在for循環之後有X++;

此代碼運行良好時,我重拍它if(pom[j]=='1') star++;if(pom[j]=='2') star++;或任何數字從我所需的時間間隔,所以我認爲問題是在我的if語句語法。任何想法傢伙?感謝您的幫助。

+2

'pom []'是什麼? – 2013-04-07 23:17:50

+3

你可能對這種類型感到困惑.. int!= char – duedl0r 2013-04-07 23:17:54

+0

@ duedl0r char是一個整數類型:-) – 2013-04-07 23:18:26

回答

3

在你如果聲明您正在使用的 '1' 的INT .The ASCII碼比較一個字符(我假設POM是char)是整數NUMER 49,而不是1。你可以這樣做:

if (pom[j] == (x + 48)) 

的另一種方法是聲明:

char X = '0'; 

閱讀ASCII table

+1

我不知道OP試圖實現什麼, 'pom []'是什麼' – 2013-04-07 23:24:26

+4

'x +'0''更具可讀性。 – Dukeling 2013-04-07 23:29:15

+0

@Dukeling我認爲如果你使用X作爲整數,更具可讀性'x + 48'。一些初學者可能會感到困惑,並想到字符串連接。整數表達式更加明確。但這只是我的意見:) – Federico 2013-04-07 23:33:33