C2440エラー:intからseasonに変換できません

このQ&Aのポイント
  • C++のプログラムでenumの変換エラーが発生しました。
  • プログラムの一部で「error C2440: 'return' : 'int' から 'season' に変換できません。」のエラーメッセージが表示されます。
  • 原因を特定するために、プログラムのコードとenumの定義を調べてください。
回答を見る
  • ベストアンサー

error C2440について

こんにちわ。 参考書を使ってCの勉強をしています。 visual2008 C++ Express Editionを使い列挙列の勉強のためのプログラムを打ったのですが enum season select(void) {  int tmp;   do { printf("0・・・ 春 1…夏 2…秋 3…冬 4…終了:"); scanf("%d", &tmp); }while(tmp < Spring || tmp > Invalid); return (tmp); } の部分で「 error C2440: 'return' : 'int' から 'season' に変換できません。」 となってしまいます。 勉強を始めたばかりなもので原因がよくわかりません。くだらない質問かもしれませんが、原因を教えていただけないでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.1

関数の戻り値がenum season型になっているのにintで戻り値を返そうとしているからです。 tmpの値と対応するenum seasonの値を返してやりましょう。

ia080024
質問者

お礼

回答ありがとうございます。 アドバイス通りやったらできました。 ありがとうございました。

関連するQ&A

  • 列挙体(enum)と関数教えてください。

    下記、勉強中の本から抜粋したものです。 main関数の中のenum animal selected;が呼び出されたあと、 どのように読んで?進んでいったらよいのでしょうか? enum(列挙体)のenum animal { Dog, Cat, Monkey, Invalid };が 0,1,2,3,の働きをするということは、enum animal select(void)関数 に続くということでしょうか? 本の中に、enum animalが型名、 selectedが変数の宣言となってることも わかりません。ただmain関数で宣言しているだけなのでしょうか? switch文の中の (selected = select())もどういう意味なのでしょうか? enum(列挙体)とenum animal select(void)関数の関係や、 main関数の中のenum animal selected;、 switch文の中の (selected = select())などの説明していただける方 教えてください。よろしくお願いします。 #include <stdio.h> enum animal { Dog, Cat, Monkey, Invalid }; void dog(void) {      puts("ワンワン!!"); } void cat(void) {      puts("ニャ~オ!!"); } void monkey(void) {      puts("キッキッ!!"); } enum animal select(void) {      int tmp;      do {           printf("0…犬 1…猫 2…猿 3…終了:");           scanf("%d", &tmp);      } while (tmp < Dog || tmp > Invalid);      return (tmp); } int main(void) {      enum animal selected;      do {           switch (selected = select()) {                case Dog : dog(); break;                case Cat : cat(); break;                case Monkey: monkey();break;           }      } while (selected != Invalid);      return (0); }

  • enumの使い方

    scanfから入力した値からenumを使うことはできませんか? 以下のようにしてみたのですが解決策がわかりません よろしくお願いします。 #include <stdio.h> enum DATA { a=1, b, c }; int main() { enum DATA data; char tmp; scanf("%c", &tmp); // aを入力したとする data = tmp; printf("%d\n", data); // 1が欲しい return 0; }

  • error C2143: 構文エラー : ';' が '{' の前にありません。

    #include <stdio.h> int main(void) {   int in;   printf("20以上の数字を入力してください\n");   scanf("%d", &in);   if(in >= 20){     printf("20以上の数字です。\n");     printf("終了します\n\n");}   else if(in <= 5){     printf("5以下の数字が入力されました\n");     printf("20には程遠いです\n\n");}   else(in <= 19){     printf("20以上の数字ではありません\n");     printf("20以上の数字を入力してください\n\n");}   return 0; } C言語でVisual C++ Expressを使っています このコードでビルドすると (16) : error C2143: 構文エラー : ';' が '{' の前にありません。 と表示されてしまいます。何がいけないのでしょうか?

  • c言語 for文

    /*指定された個数だけ整数を読み込んで合計値・平均値を算出*/ #include <stdio.h> int main(void) { int i; int sum=0; int num,tmp; printf("整数は何個ですか:"); scanf("%d",&num); for(i=0;i<num;i++) {printf("No.%d:",++i); scanf("%d",&tmp); sum = sum + tmp; } printf("合計値:%d\n",sum); printf("平均値:%.2f\n",(double)sum / num); return(0); } C言語の勉強を始めたばかりのものです。 指定された個数だけ読み込めません 汗 前置と後置をまぜたあたりがよくないのかなと思うのですが。。。 どうしておかしくなるのか教えてください。 内部でどういった処理が行われているのかまだあまりわからない状態です。 ちなみに4と入力した結果は以下です。 整数は何個ですか:4 No.1:4 No.3:3 合計値:7 平均値:1.75

  • C++ なのですがエラーが消えません

    課題のC++プログラムのエラーが消えません,教えてください. 10個の数値を入力し並び替えるプログラムなのですが並び替え部分以外は先生作成のプログラムです. どうかお願いいたします. #include <stdio.h> #define MAX 10 #define OK 0 void inputnum(int num[]); void sortnum(int num[]); void outputnum(int num[]); main(){ int num[MAX]; printf("番号 氏名\n"); inputnum(num); sortnum(num); outputnum(num); return(OK); } void inputnum(int num[]){ int i; for(i=0;i<MAX;i++,num[i]){ printf("数値%d = ", i+1); scanf("%d",&num[i]); } printf("数値入力完了\n"); } void sortnum(int num[]){ int tmp,p,q; for(p = 0; p < 9; p++){ for(q = p + 1; q < 10; q++){ if(num[p] > num[q]){ tmp = num[p]; num[p] = num[q]; num[q] = tmp; } } } printf("並び替え完了\n"); void outputnum(int num[]){ int i; for(i=0;i<MAX;i++){ printf("数値%d = %d\n",i+1,num[i]); } printf("数値出力完了\n"); }; [エラー  Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland 1142122.c: エラー E2140 1142122.c 46: ここでは宣言はできない(関数 sortnum ) エラー E2141 1142122.c 46: 宣言の構文エラー(関数 sortnum ) エラー E2134 1142122.c 54: 複合文に } がない(関数 sortnum ) *** 3 errors in Compile ***]

  • C言語エラー

    C言語をいじっているのですが、16行目と19行目の「型」の前に「;」がありませんと表示されます。 どこをどう改善すればいいか教えてもらえないでしょうか /*遊び半分*/ #include <stdio.h> #include <process.h> int main() { char dear; printf("ああああ\n"); printf("ああああ \n"); scanf_s("%c", &dear); switch (dear){ case 'A04': ; int main(void); { printf("ああああ\n"); int main(void); printf("あああ\n"); printf("あああ\n"); break; system("pause"); return 0; } case 'C34' : printf("\n"); break; case 'E24' : printf("\n"); break; case 'F38' : printf("\n"); break; default: printf("メッセージはありません\n"); break;} return 0;

  • visual studio 2013のエラー

    #include <stdio.h> int main(void) { int n1, n2; int wa; puts("二つの整数を入力してください。"); printf("整数1:"); scanf_s("%d", &n1); printf("整数2:"); scanf_s("%d , &n2") wa = n1 + n2; printf("それらの和は%dです。\n", wa); return 0; } エラー 1 error C2146: 構文エラー : ';' が、識別子 'wa' の前に必要です。 c:\users\伸之\documents\visual studio 2013\projects\training\source.cpp 10 1 training 2 IntelliSense: ';' が必要です c:\Users\伸之\Documents\Visual Studio 2013\Projects\training\Source.cpp 9 2 training のエラーが出たなんですけど、原因がわかりません。 よろしくお願いします。

  • C言語のprintfで桁数をそろえる

    次ので桁数をそろえると書いてあったけどやってみたらできなかった。 コンパイラはMS visual c++バージョンはおそらく7.1.3019 #include "stdafx.h" int _tmain(int argc, _TCHAR* argv[]) { int a; scanf("%d",&a); printf("a=%3d\n",a); return 0; }

  • C++言語について。構文エラー

    ジャンケンゲームを作ってたんですが サイトを参考にしながらやってたんですが、どこかでミスったみたいで。 コピーしてやるのはイヤなので、自分で打ちたいんです。   どうか間違いを指摘してもらえないでしょうか?            #include <stdio.h> #include <stdlib.h> int main() { int n; int p;//player int c;//computer srand(0);//乱数の初期化 do { //プレイヤーの手 printf("あなたの手を入力してください\n(グー:1、チョキ:2、パー:3\n"); scanf("%d", &p); //コンピュータの手 c = rand() % 3 + 1; //勝ち負け判定 if(p == c){ printf("draw\n"); }else if(p == 1 && c == 2){ printf("WIN!!\n"); }else if(p == 2 && c == 3){ printf("WIN!!\n"); }else if(p == 3 && c == 2){ printf("WIN!!\n"); }else{ printf("lose...\n"); } //続けるかどうかの判定 printf("try agin?\nNO(0を入力)---"); scanf("%d", &n); //nが0以外だったら続ける }while(n != 0); return 0; }        で、エラーが構文エラー : ';' が 'return' の前にありません。 というものでした。   よろしくおねがいします。

  • c言語でエラーが出ます。

    以下のプログラムでコンパイルするとエラーが出ます。どこが間違えていますか? #include <stdio.h> int main(void) { int vx,vy; puts("二つの整数を入力して下さい。"); printf("整数vx:"); scanf("%d", &vx); printf("整数vy:"); scanf("%d", &vy); printf("vx+vy=%d\n", vx+vy); printf("vx-vy=%d\n", vx-vy); printf("vx*vy=%d\n", vx*vy); printf("vx/vy=%d\n", vx/vy); printf("vx%%vy=%d\n", vx%vy); return(0); } コンパイラーはmicrosoft visual studio 2012です。エラー表示は「error C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 」と出ます。 8行目のscanfの文にエラーと出ますがどこが間違っているか分かりません。どなたか分かる方教えて頂けますか?