所以我对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 /运算符的结果是除以
第一个操作数第二个%运算符的结果是
余。在两个操作中,如果第二个操作数的值是
零,行为未定义。