首页 > 解决方案 > 带有两个参数的 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);
} ```

标签: cswitch-statement

解决方案


运算符逗号不等于 AND。运算符逗号从左到右计算操作数,并返回最后一个结果。因此,

switch (--j, ++i) {

我 = 0; 它转到案例 0,你没有 break 语句,所以你转到案例 1


推荐阅读