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 让余数符号和除数相同,这就导致同样的负数取余操作在两种语言中往往会得出不一样的结果,在实际编程过程中,需要特别留意这一差异,避免出现不符合预期的逻辑错误。
相关推荐
北冥湖畔的燕雀2 小时前
C++泛型编程(函数模板以及类模板)
开发语言·c++
Python图像识别3 小时前
71_基于深度学习的布料瑕疵检测识别系统(yolo11、yolov8、yolov5+UI界面+Python项目源码+模型+标注好的数据集)
python·深度学习·yolo
千码君20164 小时前
React Native:从react的解构看编程众多语言中的解构
java·javascript·python·react native·react.js·解包·解构
淮北4944 小时前
windows安装minicoda
windows·python·conda
Larry_Yanan6 小时前
QML学习笔记(四十二)QML的MessageDialog
c++·笔记·qt·学习·ui
爱喝白开水a6 小时前
LangChain 基础系列之 Prompt 工程详解:从设计原理到实战模板_langchain prompt
开发语言·数据库·人工智能·python·langchain·prompt·知识图谱
R-G-B6 小时前
【35】MFC入门到精通——MFC运行 不显示对话框 MFC界面不显示
c++·mfc·mfc运行 不显界面·mfc界面不显示
Madison-No77 小时前
【C++】探秘vector的底层实现
java·c++·算法
晚风残7 小时前
【C++ Primer】第十二章:动态内存管理
开发语言·c++·c++ primer
liu****7 小时前
8.list的模拟实现
linux·数据结构·c++·算法·list