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 让余数符号和除数相同,这就导致同样的负数取余操作在两种语言中往往会得出不一样的结果,在实际编程过程中,需要特别留意这一差异,避免出现不符合预期的逻辑错误。
相关推荐
想要成为糕糕手1 分钟前
从Python基础到LLM接口实战:在Notebook上实现AI自动生成亚马逊电商文案
python·openai
誰能久伴不乏4 分钟前
Qt C++ 解析 JSON 完全指南:从核心概念到工业级实战
c++·qt·json
郝学胜-神的一滴5 分钟前
力扣 144:二叉树前序遍历的优雅实现
java·数据结构·c++·python·算法·leetcode·职场和发展
拾年2755 分钟前
NumPy数组创建完全指南:从零搭建你的数字积木城
python·机器学习·numpy
王小菲10 分钟前
你能在泰坦尼克号上活下来吗-利用python进行探索性数据分析
python
枕星而眠10 分钟前
C++面向对象核心:类间关系与继承深度解析
运维·开发语言·c++·后端
FBI HackerHarry浩12 分钟前
在Python中TCP网络程序开发的步骤流程
运维·服务器·开发语言·网络·python·pycharm
Cosmoshhhyyy13 分钟前
《Effective Java》解读第54条:返回零长度的数组或者集合,而不是null
java·开发语言·python
sleven fung17 分钟前
GPT4All 本地大语言模型运行环境介绍
python·gpt·ai·langchain
zyl8372121 分钟前
Python 四大核心数据结构:列表、字典、元组、集合
数据结构·windows·python