初学C容易踩的坑
switch
子句
错误案例
switch (operator)
{
case '+':
res = add(a, b);
case '-':
res = minus(a, b);
case '*':
res = multiply(a, b);
case '/':
res = multiply(a, reciprocal(b));
}
警告
上面的代码不能正确运行。为什么?
答:需要在每一个 case
子句末尾加上 break;
命令。
提示
在 C 语言中, switch
有一个极其 *仙舟粗口* 的设计,那就是 贯穿(fallthrough),指的是 在 case
子句中一旦匹配到第一个匹配的条件,就会把后续所有 case
子句全部执行,直到遇到 break;
或者 大括号(}
)。
因此,在多数情况下(不需要贯穿机制的情况下),每一个 case
子句末尾都必须加入 break;
才能保证代码行为符合预期。
正解
switch (operator)
{
case '+':
res = add(a, b);
break;
case '-':
res = minus(a, b);
break;
case '*':
res = multiply(a, b);
break;
case '/':
res = multiply(a, reciprocal(b));
break;
}
scanf()
函数
int a, b, c;
scanf("%d%d%d", a, b, c);
警告
上面的代码不能正确运行。为什么?
。。。因为 scanf()
需要的是变量的引用。就是加了 &
的变量。
正解
int a, b, c;
scanf("%d%d%d", &a, &b, &c);
更新日志
2025/9/17 09:42
查看所有更新日志
e0006
-docs: update于