重複するケースを含む以下のコード(C言語)を検討してください。コンパイラは今回は何の警告もエラーも出さない。データタイプとswitch-caseステートメントの解決
void testSwitchCase() {
char d = 0;
switch(d) {
case 'a' + 'b':
printf("I am case 'a' + 'b'\n");
break;
case 'a' + 'b':
printf("I am case 'a' + 'b' \n");
break;
}
}
しかし、私はint d = 0
にchar d = 0
を変更した場合、コンパイラは、重複したケースに関するエラーを上げ開始します。
error: duplicate case value
は私が表現'a' + 'b'
がint
に評価すべきであることを理解しますが、私のポイントは、それが重複した場合のエラーの両方の時間を上げるべきであるということです。それはなぜですか?
どのコンパイラを使用していますか? 2つの異なるコンパイラでこれを実行しようとしましたか? – Daniel
gcc 32ビット。 codeblocks-16.01mingwには、GCC/G ++コンパイラが含まれています。オンラインコンパイラを試してみましょう。 –