以下のC++の構文で、
Non-void function does not return a value in all control paths
のエラーが出るのですが、
最後のdefaultの所で、Token型を返してないからだと思われるのですが、
エラーを発生させないで、error()例外を呼び出せるように書く方法とかあるのでしょうか?
Token get_token() // read a token from cin
{
char ch;
cin >> ch; // note that >> skips whitespace (space, newline, tab, etc.)
switch (ch) {
//not yet case ';': // for "print"
//not yet case 'q': // for "quit"
case '(': case ')': case '+': case '-': case '*': case '/':
return Token(ch); // let each character represent itself
case '.':
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
{
cin.putback(ch); // put digit back into the input stream
double val;
cin >> val; // read a floating-point number
return Token('8', val); // let '8' represent "a number"
}
default
error("Bad token");
}
}
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
よだん.
「error("Bad token");」が「"Bad token" を引数として関数 error を呼び出す」ことを意味するのであれば, 関数 error の宣言に noreturn 属性を付ければいいかもよ.
No.3
- 回答日時:
「error()例外を呼び出せるように」というのは, どのような動作を意図しているんだ? 「例外」は「送り出す」ものであって「呼び出す」ものではない.
throw で例外を送り出せば return はしなくていい. ただし例外に対処しないとプログラムが強制的に終了する.
No.1
- 回答日時:
以下AIの回答
私はプログラミングわからないです
--
このコードには、switch文のdefaultラベルの後ろにコロンがないため、コンパイルエラーが発生する可能性があります。この問題を解決するために、以下のように修正できます。
Token get_token() // read a token from cin
{
char ch;
cin >> ch; // note that >> skips whitespace (space, newline, tab, etc.)
switch (ch) {
//not yet case ';': // for "print"
//not yet case 'q': // for "quit"
case '(': case ')': case '+': case '-': case '*': case '/':
return Token(ch); // let each character represent itself
case '.':
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
{
cin.putback(ch); // put digit back into the input stream
double val;
cin >> val; // read a floating-point number
return Token('8', val); // let '8' represent "a number"
}
default:
error("Bad token");
}
}
修正後、defaultラベルの後ろにコロンがあるため、コンパイルエラーが解消されます。また、switch文に対応するカッコも修正されました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C++のcinの動作 5 2023/02/26 00:13
- TOEFL・TOEIC・英語検定 This has not yet been proven to be the case for an 2 2022/06/20 13:56
- Visual Basic(VBA) いつもお世話になります 下記のコード実行すると エラーになります わかるかた教えてくれませんでしょう 6 2022/12/17 15:01
- JavaScript jsで、switch文で書かれた分をif文にできませんか。 1 2022/07/28 15:10
- Visual Basic(VBA) Vbaで数式をポーランド記法に変換するコードを作って実行しようとするとフリーズします。 1 2022/05/24 17:53
- Visual Basic(VBA) エクセルのVBAでダブルクリックでチェックを入れたあと 1 2022/10/26 20:30
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- Visual Basic(VBA) select caseの入れ子 3 2023/03/08 18:48
- C言語・C++・C# カードシャッフルのブログラムを使ってc言語でブラックジャックをしたい 2 2022/04/12 15:13
- Visual Basic(VBA) Excelのマクロについて教えてください。 3 2022/06/30 09:36
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C++のcase文の書き方
-
コンソールアプリケーションの...
-
Directxについて
-
ウィンドウハンドルがメッセー...
-
エラー Run-Time Check Failur...
-
ウィンドウが表示されない
-
Win32APIにて、ウィンドウ全体...
-
C言語win32api、エディットボッ...
-
C#のswitch文を簡略化したいの...
-
return文がない場合の戻り値は...
-
COMPORTマルチスレッドで例外発生
-
マウスの反応
-
c言語
-
Enterキーを押されたら次の処理...
-
#define _CRT_SECURE_NO_WARNIN...
-
C言語での引数の省略方法
-
2÷3などの余りについて
-
「指定されたキャストは有効で...
-
信頼区間の1.96や1.65ってどこ...
-
DWORDの実際の型は何でしょうか
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
音量調節
-
return文がない場合の戻り値は...
-
C#のswitch文を簡略化したいの...
-
ゲームとかの解像度変更&全画...
-
エラー Run-Time Check Failur...
-
コンソールアプリケーションの...
-
キャレットの現在位置の表示 (W...
-
エディットボックスの背景の色...
-
COMPORTマルチスレッドで例外発生
-
C言語win32api、エディットボッ...
-
ツリーコントロールの開閉アイ...
-
Win32APIにて、ウィンドウ全体...
-
Win32APIでウィンドウを中央に...
-
エディットコントロール入力時...
-
不思議な現象が起こるプログラ...
-
ダイアログプログラムでEnterキ...
-
Win32のファイルダイアログのサ...
-
C言語のswitch case文で、scanf...
-
WM_CREATE について
-
LoadImageを使用し、タイトルバ...
おすすめ情報
ごめんなさい^^;
タイプミスです。defaultの後には、:(コロン)はあります。