2011-07-11 20 views
0

私はCを新しく読んでいます。「Cの簡単なステップでのプログラミング」という本の中の概念とサンプルコードを読んでいます。intからmain():: colorsへの無効な変換ですか?

だから、私はこのプログラム例、文字の文字を入力:

#include <stdio.h> 
int main() 
{ 
    /* declare a sequence of constants */ 
    enum colors 
    { RED=1,YELLOW,GREEN,BROWN,BLUE,PINK,BLACK }; 

    /* Declare a variable of the enumerated data type */ 

    enum colors fingers; 

    /* assign valid constants from the colors list */ 
    /* -----THIS IS THE ERROR LINE BELOW---------- */ 

    fingers = (enum colors) PINK + BROWN; 


    /*-display the value in the variable */ 
    printf("Value: %d\n", fingers); 

    return 0; 
} 

と私はこのエラーを取得:コンパイラはfingersを認識しないいくつかの理由について

13 C:\Users\mjohearn\Documents\pet projects\constant types NOT WORKING\enumtypes.cpp invalid conversion from `int' to `main()::colors' 

を。

誰でも私がこの問題を解決するのを手伝ってくれたら、本当にありがとう。

+5

ああ、私は答えの潮を受け取ることができます... – Ulterior

+1

Cのファイル拡張子は ".c"です。 ".cpp"はC++用です。 (また、Cコンパイラではなく、Cコンパイラを使用してC言語をコンパイルすることもできます)。 – geoffspear

+0

あなたのリストから外れるPINK + BROWN = 10。さらに、PINK + BROWNを型キャストする必要がありますか? –

答えて

1

は、私はキャスト演算子がより緊密に加算演算子よりも結合し信じる

fingers = (enum colors) (PINK + BROWN) ; 

を試してみてください。

+0

ありがとう:)私はすぐにそれを試してみましょう。 –

+0

右上に!それがトリックでした。これは "C"コンパイラの新しい標準のためですか?私のテキストは2002年から2004年の日付です。 –

+0

Nope。それは永遠からそうだった。 C/C++演算子優先順位チャート - http://en.wikipedia.org/wiki/Operators_in_C_and_C%2B%2B#Operator_precedence - 優先度の降順と左寄せか右寄せかを示します。 Plus ... @mingosが指摘しているように、2つの列挙型の値を一緒に加えることは本当に意味をなさない。 C言語を学びたい場合は、Kernighan&Ritchieの* The C Programming Language *、Harbison&Steeleの* C:A Reference Manual *のコピーを入手してください。 K + Rはこれまでに書かれた最高のプログラミング・テキストの1つです。 –

関連する問題