带有两个参数的Switch语句

问题描述 投票:0回答:1

我有一个与带有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);
} ```
c switch-statement
1个回答
0
投票

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

switch (--j, ++i) {

i = 0;转到案例0,您没有break语句,所以转到案例1

© www.soinside.com 2019 - 2024. All rights reserved.