[問題] enum上的一個問題

看板C_and_CPP (C/C++)作者 (期待的盼望)時間15年前 (2010/10/23 01:28), 編輯推噓2(204)
留言6則, 4人參與, 最新討論串1/1
以下是程式碼 #include<stdio.h> #include<stdlib.h> int main(void) { char key; enum color { red=114, green=103, blue=98 }shirt; do { printf("請輸入r,g或b:"); scanf("%c",&key); fflush(stdin); }while((key!=red)&&(key!=green)&&(key!=blue)); shirt=key; ←我的主要問題在這一行~~~ 為什麼會編譯器說這行有bug In function 'int main()': invalid conversion form 'char' to 'main()::color' switch(shirt) { case red: printf("你選擇了紅色\n"); break; case green: printf("你選擇了綠色\n"); break; case blue: printf("你選擇了藍色\n"); break; } system("pause"); return 0; } 我想要寫一個可以讓使用者輸入r、g和b這三個鍵,分別代表紅、綠、藍三個顏色, 程式的輸出則是印出相對應的顏色訊息。如果輸入的不是這三個鍵程式會要求重新輸入。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.118.52.229

10/23 01:31, , 1F
解決方式之一: shirt = (color)key;
10/23 01:31, 1F

10/23 01:32, , 2F
因為 enum color 是一種跟 char 不一樣的 type
10/23 01:32, 2F

10/23 02:04, , 3F
一直閃看起來實在很累...
10/23 02:04, 3F

10/23 10:56, , 4F
不能直接指定吧,型態不同,dev C好像可以過,VC過不了
10/23 10:56, 4F

10/23 10:57, , 5F
正確來說C可以過,C++過不了
10/23 10:57, 5F

10/25 07:34, , 6F
很多人喜歡把C的程式碼餵給C++編譯器吃= =a
10/25 07:34, 6F
文章代碼(AID): #1CmSdBLg (C_and_CPP)
文章代碼(AID): #1CmSdBLg (C_and_CPP)