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 让余数符号和除数相同,这就导致同样的负数取余操作在两种语言中往往会得出不一样的结果,在实际编程过程中,需要特别留意这一差异,避免出现不符合预期的逻辑错误。
相关推荐
过期的秋刀鱼!9 分钟前
机器学习-带正则化的成本函数-
人工智能·python·深度学习·算法·机器学习·逻辑回归
郝学胜-神的一滴11 分钟前
机器学习数据预处理:归一化与sklearn的MinMaxScaler详解
人工智能·python·程序人生·机器学习·性能优化·sklearn
weixin_4624462316 分钟前
Python 使用 Chainlit + Ollama 快速搭建本地 AI 聊天应用
人工智能·python·ollama·chainlit
小北方城市网16 分钟前
SpringBoot 集成 MinIO 实战(对象存储):实现高效文件管理
java·spring boot·redis·分布式·后端·python·缓存
UR的出不克18 分钟前
Python实现SMZDM数据处理系统:从爬虫到数据分析的完整实践
爬虫·python·数据分析
不如语冰20 分钟前
AI大模型入门1.3-python基础-类
人工智能·pytorch·python·类和方法
一代土怪21 分钟前
django中实时更新数据库
python·django
学习3人组22 分钟前
AI视觉Python方向专业技术名词
开发语言·人工智能·python
_OP_CHEN22 分钟前
【算法基础篇】(四十八)突破 IO 与数值极限:快速读写 +__int128 实战指南
c++·算法·蓝桥杯·算法竞赛·快速读写·高精度算法·acm/icpc
Blossom.11825 分钟前
大模型分布式训练通信优化:从Ring All-Reduce到分层压缩的实战演进
人工智能·分布式·python·深度学习·神经网络·机器学习·迁移学习