当/运算符和%运算符的操作数是负数时

当/运算符和%运算符的操作数是负数时,比如-9/7,有-2或者5两种结果,为什么呢?

首先先说余数,在C语言中余数的符号是和被除数的符号相同。即:
(-10)%3==-1;
10%(-3)==1;
(-10)%(-3)==-1;
做除法的时候,商是令其与分子相乘的积的绝对值不超过分母的绝对值且最接近的那个数,
所以
(-10)/3==-3;
10/(-3)==-3;
(-10)/(-3)==3;

余数与被除数(即分子的符号)相同;先将各个带符号的数全部取正值再做除法,再根据负号的个数确定商的符号

具体来说语言不同,处理结果不同,