2014-03-26 78 views
1

我想使枚舉包含操作(+, - /,*)。 類似的東西枚舉運算符(+, - ,*,/)in c

enum operators{plus="+",minus="-",multy="*",div="/"};

或類似的東西上面。

我想它的字符串,例如比較(當輸入=「+」):

enum operators op; 
scanf("%s",input); 
    if(strcmp(input,op.plus)==0) // compiler error here 
     printf("ok"); 

任何想法會有所幫助。

在此先感謝。

+0

閱讀您的編輯,回答如下。 – ryyker

回答

4

enums是整數和字符常量也INTS在C,所以你可以這樣來做:

enum operators { plus = '+', minus = '-', mult = '*', div = '/' }; 

如果你有一個字符串(字符數組)命名爲input,你可以做你的測試這樣的:

if (input[0] == plus) 
    printf("ok"); 

你更可能在switch語句中使用它:

switch (input[0]) { 
case plus: 
    // do something 
    break; 
case minus: 
    // do something 
    break; 

+0

有趣,但我怎麼能比較它與一個像這樣的枚舉操作符的字符串操作; scanf(「%s」,輸入); (strcmp(input,op.plus)== 0){printf(「\ nok」); when input =「+」; – csgk

+0

@csgk - 你能讀一個'char'嗎?如果是的話,你可以簡單地測試一下'input_value =='+';'(等)。正如你所描述的那樣,你的strcmp想法也行得通。它真的取決於你。 – ryyker

+0

我讀它作爲字符,並不與上述代碼一起工作我得到編譯器錯誤<錯誤:請求成員'加'在某些不是結構或聯合> ....?輸入=='+'它不工作,你會得到編譯器警告<警告:指針和整數之間的比較> a有嘗試它,當然輸入==「+」不起作用。 – csgk

1

enum是一個整數類型的奇特名稱。 "+"是一個字符串,不是整數。

用途:

enum operators { plus = '+', minus = '-', multy = '*', div = '/' }; 

或者,你可以簡單地使用:

enum operators { plus, minus, multy, div }; 

值將是不同的,但是數字會從0開始。

+0

+1指向我們「+」和「+」之間的區別。我無法計算我被捕的時間。 – ryyker

0

的符號使用的是(即op.plus)對於枚舉不正確。這將是struct表示法。

然而,你可以做這樣的事情:
,我不使用字符串,我使用char & int相反,他們更容易在switch()聲明後整合。)

的#include

enum operator { 
    plus = '+', //add == 43 
    minus = '-', //minus == 45 
    mult = '*', //mult == 42 
    divi = '/', //div == 47 
}; 



int main(void) 
{ 
    int a, b; 
    char op; 

    printf("enter \"+\", \"-\", \"*\" or \"/\"\n"); 
    scanf("%c", &op); 
    printf("enter 2 integer values separated by a space, <return>\n"); 
    scanf("%d%d", &a, &b); 
    switch(op) { 
     case plus: 
      printf("%d + %d == %d\n", a, b, a+b); 
      break; 
     case minus: 
      printf("%d - %d == %d\n", a, b, a-b); 
      break; 
     case mult: 
      printf("%d * %d == %d\n", a, b, a*b); 
      break; 
     case divi: 
      printf("%d/%d == %d\n", a, b, a/b); 
      break; 
    } 
    getchar(); 
    getchar(); 

    return 0; 
} 

注意,因爲這確實整數數學,像5/2的東西將== 2,而不是2.5