2009-12-26 2 views
0

Я пытаюсь перечислить некоторые операторы, мой код линия:проблемы при использовании перечисления для операторов, таких как +, - в с

enum operations{+=4,-,%,<,>} 

, когда я пытаюсь скомпилировать эту строку, НКУ говорит: ожидается идентификатор перед марке «+»

Итак, как я могу перечислить эти операторы. Можем ли мы использовать для них некоторые escape-символы?

ответ

7

Лучше что-то вроде этого:

enum Operations 
{ 
    Plus=4, 
    Minus, 
    Mod, 
    LessThan, 
    MoreThan 
} 
3

Нет, вы не можете. Вам необходимо присвоить им имена, как и для любого идентификатора:

enum operations 
{ 
    PLUS = 4, // + 
    MINUS, // - 
    MOD,  // % 
    LESS,  // < 
    GREATER // > 
}; 
2

Перечисление - это список идентификаторов, имеющих определенное значение. Вы не можете использовать символы, такие как +, =, <,> и т. Д. Как имена идентификаторов.

Вам необходимо прописать имена, такие как:

enum Operators 
{ 
    Plus, 
    Equals, 
    LessThan, 
    GreaterThan 
} 
4

Перечисление должно быть идентификаторами, вы не можете использовать оголенные символы. Таким образом,

enum operations { inc_by_4, minus, modulus, less_than, greater_than }; 

будет работать. (Я предполагаю, что вы хотите выразить, я, вероятно, далеко, но это характер догадок.)

Если бы вы могли рассказать нам, что вы на самом деле хотите сделать, мы, вероятно, сможем ответить вам лучше.

+0

Кажется, я неправильно читал + = 4, но тогда ... мой C, очевидно, немного ржавый. ;-) Интересно, однако, это разнообразие стилей, видимых только в этих немногих примерах (и ... я бы, конечно, распространил бы его более чем на строку в фактическом (производственном) коде. Но опять же, Python не все равно перечислены ;-)) –

+0

Я не думаю, что вы неправильно поняли. '+ = 4' как * приращение на четыре * - вполне разумная интерпретация. – wallyk

1

Кроме того, пожалуйста, примите во внимание, что в вашем коде

enum operations{+=4,-,%,<,>}

последовательность += обрабатывается как оператор в + = выражение присваивания. Этому может помочь вставка пробела между + и = - только это даст еще одну ошибку компилятора.