[英]Mechanics of 'x % y != 0' in C++
有人可以解釋一下C ++中x % y !=0
的幕后機制嗎? 如果整數除法中沒有余數,則結果為0,如果有任何余數,則結果為1。 我發現這很有用,但是我想了解發生了什么,因為語法對我而言並不直觀。
我是在一個單獨的線程中發現的,我沒有評論權限:
謝謝。
(請原諒任何格式的偽造內容;這是我第一次來)
%
是整數余數運算符。 例如:
21 % 7 == 0
22 % 7 == 1
25 % 7 == 4
27 % 7 == 6
28 % 7 == 0
x % y != 0
如果整數除法得出的余數為非零,則為true;否則為false。 x % y
就是余數; x % y != 0
測試該余數是否為非零。
(請注意, x % y != 0
也可以寫為(x % y) != 0
)
考慮負操作數時,它有點復雜。
表達式的結果是一個布爾值(通過“不等於”的二進制運算符)。 因此,如果模量的結果為非零,則完整表達式的結果為1(真)。 如果模量的結果為零,則完整表達式的結果為0(假)
好吧,看來您的問題是模運算符(%)。 因此,該運算符的作用是在將兩個數相除后為您提供余數。
例如 5 % 2 = 1
因為當我們用5/2進行整數除法時,我們得到2,但是顯然我們有1作為余數。 另一個示例是22%4 = 2,因為22/4 = 5,其余2個。
現在我們了解了這一點,我們可以清楚地看到,如果我們得到一個非零數字,則表達式x % y != 0
將返回true,因此我們有兩個不相除的整數。 如果我們將其視為假,則我們將得到兩個確實相除的數字。 因此,實際上您會倒退,因為如果整數除法成功且沒有余數x % y == 0
那么0 != 0
將為false。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.