所以我对C语言中的运算符的逻辑有疑问。我不知道编译器如何运行这些(%)/?

#include <stdio.h>
int main (){
int number1=1606,number2,number3,number4;
number2 = number1/5000;
number3 = (number1%5000)/1000;
number4 = (number1%5000)%1000/100;
printf("%d\n%d\n%d\n%d",number1,number2,number3,number4);
return 0;
}


所以我不明白那个数字3?
1606%5000 = 3212然后/ 1000 = 3是吗?所以我从中得到1呢?

最佳答案

在此声明中

number3 = (number1%5000)/1000;


使用整数运算。运算符%产生其余的运算符/。

因此,子表达式number1%5000给出值1606,因为

number1可以表示为

number1 = 0 * 5000 + 1606.


将其余部分除以1000,您将得到1

根据C标准(6.5.5乘法运算符)


  5 /运算符的结果是除以
  第一个操作数第二个%运算符的结果是
  余。在两个操作中,如果第二个操作数的值是
  零,行为未定义。

10-07 16:44