c语言 Switch case 问题

img


m=3 k=-4;m=4 k=-12;判定条件m小于等于四 结果为什么不是-12

  • m = 1
    • m % 4 = 1, s += 1, s = 1, k = 1;
  • m = 2
    • m % 4 = 2, s -= 2, s = -1, k = 0;
  • m = 3
    • m % 4 = 3, s -= 3, s = -4, k = -4;
  • m = 4
    • m % 4 = 0, s += 4, s = 0, k = -4
  • 最后输出 -4

m%4,是个表达式,它用m除以4,算出余数
但是这个式子并不改变m的值呀
m=m%4才会改变m的值
你学语言,要先从基础开始学,不要着急
很显然现在你连到底在取值还是在赋值还没有搞清楚
建议还是从头把概念好好捋一遍,不要贪多

因为每一次都执行了一个k+=s,而不是2次执行1次

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7742085
  • 以下回答来自chatgpt:

    针对当前问题,应该是m和k的类型为何没有提到的问题,否则没法详细回答。一般情况下,switch case语句处理的是整数类型或字符类型,如果m和k不是整数或字符类型,就需要进行类型转换。同时,由于m和k的取值范围可能超过了int类型的范围,所以需要考虑是否需要使用long long类型进行存储。如果以上问题均已处理完毕,那么出现不同的结果可能是因为代码逻辑出现错误,建议逐步对逻辑进行排查和调试。具体的解决方案需要更多细节信息才能给出。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^