c - 带有两个参数的 switch 语句
问题描述
我有一个与带有 2 个参数的 switch 语句相关的问题。我不明白要寻找哪个值。我在某处读过逗号(,)等于AND,但这对我没有多大帮助,因为在调试时它会转到案例1,案例1,然后是默认值,所以我真的不明白。
任何帮助将不胜感激,谢谢!
#define ADD(x, y) x+y
#define MUL(x, y) x*y
void main() {
int arr[6] = { 012, -2, 7 - 011, 0x1F, 3 }, res = 0;
int n = sizeof(arr) / sizeof(int), i, j;
for (i = -1, j = n; i <= n / 2;) {
switch (--j, ++i) {
case 0: res += MUL(arr[i], arr[j]);
case 1: res += ADD(arr[i], arr[j]); break;
case 4: res += MUL(ADD(arr[i], arr[j]), ADD(arr[i + 1], res));
default: res++; break;
}
}
printf("%d", res);
} ```
解决方案
运算符逗号不等于 AND。运算符逗号从左到右计算操作数,并返回最后一个结果。因此,
switch (--j, ++i) {
我 = 0; 它转到案例 0,你没有 break 语句,所以你转到案例 1
推荐阅读
- cuda - 可以将短裤数组传递到 CUDA 内核中吗
- docker - 使用 docker 实时升级
- html - 尝试使用 flex 规则在 flex 容器中左对齐文本
- zapier - 样本数据引起的额外触发输出
- python - Python - 如何根据字典对数组中的值进行排序和替换
- c# - 如何读取一个字符串直到逗号,然后保存该位并显示它?
- laravel - GraphQL ID 类型更正 - 如何使用 String?
- python - 如何通过 Python 使用谷歌翻译翻译口语成绩单
- javascript - 如何专门为字符串着色文本?
- javascript - Javascript Promise 链接无法按预期工作