首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

C/C++ 整數除法詳解:向零取整規則與負數處理

     編輯:關於C++

核心規則:向零取整

C/C++ 整數除法採用向零取整(Truncation toward zero):捨去小數部分,保留整數部分。即結果朝 0 方向取最接近的整數。

四種符號組合測試

運算式數學值C/C++ 結果說明
9 / 51.81正數直接捨去小數
9 / -5-1.8-1向零方向取整(-1 比 -2 更接近 0)
-9 / 5-1.8-1向零方向取整
-9 / -51.81負負得正,捨去小數

關鍵區別:向零取整 vs 向下取整

  • 向零取整(C/C++):-9/5 = -1,9/-5 = -1
  • 向下取整(Python //、數學 floor):-9//5 = -2,9//-5 = -2

這是跨語言移植代碼時常見的坑點。

取模運算配合關係

C/C++ 保證:(a / b) * b + (a % b) == a

aba / ba % b驗證
95141*5+4=9 ✓
-95-1-4-1*5+(-4)=-9 ✓
9-5-14-1*(-5)+4=9 ✓
-9-51-41*(-5)+(-4)=-9 ✓

實際編程建議

  1. 避免依賴負數除法/取模行為:不同語言標準可能不同(C++11 前甚至是實現定義)
  2. 需要向下取整時:手動調整 (a >= 0 ? a/b : -((-a+b-1)/b))
  3. 需要正數餘數時:((a % b) + b) % b
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved