对取余运算的结果有一些疑问

#include <stdio.h>
int i=1;
int main(){
switch ( i%3 ) {
case 0: printf("zero");
case 1: printf("one");
case 2: printf("two");
}
}
对1%3的结果有些疑问

结果有问题是代码结构有问题,switch语句中没有加break ,这样每种情况都会往下执行再跳出.1%3没啥问题

正确做法是


#include <stdio.h>
int i = 1;
int main() {
    switch (i % 3) {
    case 0: printf("zero"); break;
    case 1: printf("one");  break;
    case 2: printf("two");  break;
    }
    return 0;
}

1%3不是余1吗有什么疑问

你case里没有写break,会贯穿标签

每个 case 后面缺了 break;

#include <stdio.h>
int i = 1;
int main() {
    switch (i % 3) {
    case 0: printf("zero"); break;
    case 1: printf("one");  break;
    case 2: printf("two");  break;
    }
    return 0;
}