求解这个代码中里,switch的用法

下列程序运行后的输出结果第一行是 23;第二行是 other。

#include<stdio.h>
int main()
{ int i, a=0, b=2;
switch(++a, a*b)
{ case 1: printf("1");
case 2: printf("2");
case 3: printf("3\n");break;
default: printf("other\n");
}
return 0;
}

逗号运算符的返回值是最后一个表达式的值。而且你这没break,会一直往下执行

other是哪来的,不应该有other啊
除非你代码贴错了,多打了个break
代码不多,知识点不少
1.首先是逗号表达式,++a, a*b,从左到右执行,并且以最后一个逗号的值作为整个表达式的值。那么其实相当于
++a;
switch(a*b)
2.当case标签里没有写break时,代码会贯穿标签,比如a*b的值是2,匹配case 2,但是由于没有break,会继续执行case 3里的代码,然后遇到break就结束了
如果后面还继续打印other,那么case 3里也应该没有break才对