4 回答

TA貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個(gè)贊
結(jié)果總會(huì)成為師的底線嗎?什么是定義的行為?
是,兩個(gè)操作數(shù)的整數(shù)商。
6.5.5乘法運(yùn)算符
6當(dāng)整數(shù)被分割時(shí),/運(yùn)算符的結(jié)果是代數(shù)商,丟棄任何小數(shù)部分。88)如果商a / b是可表示的,則表達(dá)式(a / b)* b + a%b應(yīng)等于a。
以及相應(yīng)的腳注:
88)這通常被稱為“截?cái)酁榱恪薄?/p>
當(dāng)然要注意的兩點(diǎn)是:
3通常的算術(shù)轉(zhuǎn)換是在操作數(shù)上執(zhí)行的。
和:
5 /運(yùn)算符的結(jié)果是第一個(gè)操作數(shù)除以第二個(gè)操作數(shù)的商; %運(yùn)算符的結(jié)果是余數(shù)。在這兩個(gè)操作中,如果第二個(gè)操作數(shù)的值為零,則行為未定義。
[注意:強(qiáng)調(diào)我的]

TA貢獻(xiàn)1872條經(jīng)驗(yàn) 獲得超4個(gè)贊
Dirkgently給出了 C99中整數(shù)除法的優(yōu)秀描述,但是您也應(yīng)該知道在C89中,帶有負(fù)操作數(shù)的整數(shù)除法具有實(shí)現(xiàn)定義的方向。
從ANSI C草案(3.3.5):
如果任一操作數(shù)為負(fù),則/運(yùn)算符的結(jié)果是小于代數(shù)商的最大整數(shù)還是大于代數(shù)商的最小整數(shù)是實(shí)現(xiàn)定義的,這是%運(yùn)算符的結(jié)果的符號(hào)。如果商a / b是可表示的,則表達(dá)式(a / b)* b + a%b應(yīng)等于a。
當(dāng)你遇到C89編譯器時(shí),請(qǐng)注意負(fù)數(shù)。
這是一個(gè)有趣的事實(shí),C99選擇截?cái)酁榱?,因?yàn)檫@是FORTRAN如何做到的。請(qǐng)參閱comp.std.c上的此消息。

TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超9個(gè)贊
在結(jié)果為負(fù)的情況下,C截?cái)酁?而不是地板 - 我學(xué)習(xí)了這個(gè)解釋為什么Python整數(shù)除法總是落在這里:為什么Python的整數(shù)分區(qū)Floors

TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超8個(gè)贊
是的,結(jié)果總是被截?cái)酁榱恪K鼘⒊钚〉慕^對(duì)值四舍五入。
-5 / 2 = -2 5 / 2 = 2
對(duì)于無符號(hào)和非負(fù)有符號(hào)值,這與floor(向-Infinity舍入)相同。
- 4 回答
- 0 關(guān)注
- 779 瀏覽
添加回答
舉報(bào)