2014-01-18 47 views
0

我的字符串是XABC,且第一個字符是X.在我的IF函數,如果第一= X符號= 0,但我printf的象徵,它給了我符號= 2C代碼,如果沒有正常工作的功能

#include <stdio.h> 
#include <string.h> 
int main(void) 
{ 
    checkformula("XAbc"); 

} 
void checkformula(char* formula) 
{ 
    char first = formula[0]; 
    int symbol; 

printf("first character is %c\n",first); 
    if (first = 'E') 
    { 
      symbol = 2; 
    } else if (first = "~") 
    { 
     symbol = 1; 
    } else if (first = 'X'){ 
     symbol = 0; 
    } else if (first = 'A') 
    { 
      symbol = 3; 
    } else if (first = '(') 
    { 
     symbol = 4; 

    } else { 
     symbol = -1; 
     } 


printf("symbol is %i\n", symbol); 

OUTPUT:

第一個字符是X 符號是2

+0

'='是賦值運算符,'=='是相等運算符 –

回答

0

如果語句錯誤。你是不是故意使用「==」而不是「=」運算符?你正在做一個任務而不是比較。

if (first == 'E') 
    { 
      symbol = 2; 
    } else if (first == "~") 
    { 
    //etc 
1
  • 你的代碼調用未定義行爲,因爲它沒有原型的功能checkformula。在main之前放置一個函數原型。

應該是這樣:

void checkformula(char *); 
  • 您正在使用賦值運算符=if報表,而不是==運營商。

應該

if (first == 'E') {...} 
3

在你if語句,你需要測試與==運營商平等。實際上,您正在使用賦值運算符=,它正在修改左側變量的值,併爲if提供「true」值,只要右側的字符不是ASCII NUL()字符 - 「零」值爲false,非零值爲C中的true