我有一个与带有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) {
i = 0;转到案例0,您没有break语句,所以转到案例1