我正在做一个大学项目。我遇到的问题是这个问题的简化版本。
decrypt()
显示错误。我不明白。请解释一下...... 谢谢。
答案 0 :(得分:4)
在C语言中,case标签必须是编译时常量。在你的代码中,ar [i]不编译时间常数。
C11 6.8.4.2转换声明(第3段):
每个案例标签的表达式应为整数常量 表达式并没有两个案例常量表达式相同 switch语句在转换后应具有相同的值。
答案 1 :(得分:1)
case
表达式必须是编译时常量。表达式ar[i]
不是编译时常量,它在运行时进行评估。
你可以通过一些重构来解决它:
switch (ar[i])
{
case h1:
printf("got h1\n");
break;
}
另一种方法当然是使用if
语句,如
if (i == ar[i]) { ... }