C++中的负数取余规则(取模%)规则 在C++中,取余运算( % )的结果符号与被除数相同。从数学定义角度看,C++遵循的是尽量让商向零取整的规则。例如计算 -7/3,商是 -2 (向零取整),然后根据公式:被除数 = 除数×商+余数 来计算余数,即 -7 = 3×(-2)+(-1) ,所以余数为 -1 。 cout<<7%3<<endl; // 1 7=3*2+1,余数是:1 cout<<7%-3<<endl; // 1 7=-3*(-2)+1,余数是:1 cout<<-7%3<<endl; // -1 -7=3*(-2)-1,余数是:-1 cout<<-7%-3<<endl; // -1 -7=-3*(-2)-1,余数是:-1 Python中的负数取余(取模%)规则 Python中的取模运算结果符号与除数相同,并且保证结果在 [0, 除数 - 1] 这个区间内。从数学定义角度看,Python遵循的是使商尽可能小(向下取整)的规则。例如计算 -7/3 ,商是 -3 (向下取整),然后根据公式 被除数 = 除数×商+余数 来计算余数,即 -7 = 3×(-3)+2 ,所以余数为 2 。 print(7%3) # 1 因为:7=3*2+1 print(7%-3) # -2 因为:7=-3*(-3)-2 print(-7%3) # 2 因为:-7=3*(-3)+2 print(-7%-3)# -1 因为:-7=-3*2-1 总结区别 总的来说,C++ 和 Python 对于负数取余运算,核心区别在于余数符号遵循的规则不同。C++ 让余数符号和被除数相同,而 Python 让余数符号和除数相同,这就导致同样的负数取余操作在两种语言中往往会得出不一样的结果,在实际编程过程中,需要特别留意这一差异,避免出现不符合预期的逻辑错误。