C++和Python中负数取余结果的区别

  1. C++中的负数取余规则(取模%)规则
  • 在C++中,取余运算( % )的结果符号与被除数相同。
  • 从数学定义角度看,C++遵循的是尽量让商向零取整的规则。例如计算 -7/3,商是 -2 (向零取整),然后根据公式:被除数 = 除数×商+余数 来计算余数,即 -7 = 3×(-2)+(-1) ,所以余数为 -1 。
cpp 复制代码
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
  1. Python中的负数取余(取模%)规则
  • Python中的取模运算结果符号与除数相同,并且保证结果在 0, 除数 - 1 这个区间内。
  • 从数学定义角度看,Python遵循的是使商尽可能小(向下取整)的规则。例如计算 -7/3 ,商是 -3 (向下取整),然后根据公式 被除数 = 除数×商+余数 来计算余数,即 -7 = 3×(-3)+2 ,所以余数为 2 。
python 复制代码
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
  1. 总结区别
    总的来说,C++ 和 Python 对于负数取余运算,核心区别在于余数符号遵循的规则不同。C++ 让余数符号和被除数相同,而 Python 让余数符号和除数相同,这就导致同样的负数取余操作在两种语言中往往会得出不一样的结果,在实际编程过程中,需要特别留意这一差异,避免出现不符合预期的逻辑错误。
相关推荐
Alan_6911 小时前
聊聊 Swagger/Postman/Apifox 的真实选型与 Python 项目实战
python·测试工具·postman
cookies_s_s1 小时前
C++ 字符串动态创建对象 -- 工厂模式、自动注册、模板递归动态调用
服务器·开发语言·c++
王老师青少年编程2 小时前
2026年6月GESP真题及题解(C++七级):消消乐
数据结构·c++·算法·真题·gesp·2026年6月
海清河晏1112 小时前
数据结构 | 二叉搜索树
数据结构·c++·visual studio
智慧物业老杨2 小时前
物业绿化数智化权责管控方案:基于工单平台的双层权限追溯模块落地实践
python
盐焗鹌鹑蛋2 小时前
【C++】继承
开发语言·c++
Metaphor6923 小时前
使用 Python 在 Word 文档中添加批注
python·word
FreakStudio3 小时前
WIZnet 开源方案分享:W55MH32 开发板 + 小智 AI实现以太网版本的小智机器人
python·单片机·嵌入式·大学生·面向对象·并行计算·电子diy·电子计算机
会周易的程序员3 小时前
使用 pybind11 封装 C++ 日志库 microLog 为 Python 模块
java·c++·python·物联网·架构·日志·aiot
WZF-Sang3 小时前
网络基础——2
服务器·网络·c++·学习·网络编程·php