gpt4 book ai didi

c - C中的开关和字符串文字字符

转载 作者:行者123 更新时间:2023-12-02 08:40:46 26 4
gpt4 key购买 nike

看看下面的例子:

int main(){
char *s = "Hello";
switch (s[0]) {
case "Hello"[0]:
return 1;
case "Goodbye"[0]:
return 2;
default:
return 0;
}
}

编译此示例时,我收到一个错误,提示 case 标签不是整数。但这似乎不正确,因为 "..."[0] 解析为整数。

有人可以阐明这一点并解释为什么这段代码无法编译吗?

最佳答案

Case 标签需要是整型常量,而不是整型表达式。虽然表达式 "Hello"[0] 可以在编译时计算为 'H',但编译器不需要这样做。

C99 standard, section 6.8.4.2, part 3:

The expression of each case label shall be an integer constant expression and no two of the case constant expressions in the same switch statement shall have the same value after conversion.

关于c - C中的开关和字符串文字字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16745895/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com