考慮下面包含重複情況的代碼(C語言)。編譯器這次沒有提供任何警告/錯誤。數據類型和開關大小寫語句解析
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;
}
}
但如果我改變char d = 0
到int d = 0
,編譯器開始提高公衆對重複的情況下錯誤。
error: duplicate case value
我明白表達'a' + 'b'
應評估到int
但我的觀點是,應該提高重複錯誤的情況下這兩個時間。爲什麼它不?
你使用什麼編譯器?你有沒有試過在兩個不同的編譯器上運行這個? – Daniel
gcc 32位。 codeblocks-16.01mingw其中包括GCC/G ++編譯器。好的,讓我試試一些在線編譯器。 –