考虑下面包含重复情况的代码(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 ++编译器。好的,让我试试一些在线编译器。 –