我试图创建一个输出文件中最常用字符的程序。
为什么编译器在尝试时会给我一个错误:
for (char i = 97 ; i <=122 ; i ++) {
switch (x) {
case i :
break;
}
}
此代码使用开关来获取最常用的字符。错误是:
'i' cannot appear in a constant-expression
答案 0 :(得分:0)
case
标签需要编译时间常数,并且您尝试使用变量i
,因此您会得到相当描述性的错误消息。
如果你需要对变量进行测试,直接替换是if-else if -...- else梯形图。虽然你的简单案例没有&#34;否则&#34;部分,此外,break
突破了switch
,因此您无法使用它来摆脱循环(直接替换将使用goto
,但它&# 39; s 远在几乎所有情况下都能更好地重新思考你的逻辑。)
所以写下你的代码:
for (char i = 97 ; i <=122 ; i ++) {
if (x == i) {
break; // did you mean to break the loop?
}
}
答案 1 :(得分:0)
'我'不能出现在常量表达式中 因为编译器不明白什么是'i'。接下来,你应该将i传递给 开关。 你可以做到。