我正在使用使用餘數運算符號碼是另一個的倍數。如果第一個數字是3,第二個數字是15,那麼支票號碼是另一個的數字
if (3 % 15 == 0) {
}
然後它的工作(不進入if)。但現在,如果第一個數字是3和第二個數字是4000,然後它不工作條件仍然爲真
if (3 % 4000 == 0) {
}
這不應該進入,如果情況。但這裏的條件是真實的。爲什麼這樣?
我正在使用使用餘數運算符號碼是另一個的倍數。如果第一個數字是3,第二個數字是15,那麼支票號碼是另一個的數字
if (3 % 15 == 0) {
}
然後它的工作(不進入if)。但現在,如果第一個數字是3和第二個數字是4000,然後它不工作條件仍然爲真
if (3 % 4000 == 0) {
}
這不應該進入,如果情況。但這裏的條件是真實的。爲什麼這樣?
如果您仔細測試您的程序,您會發現在任何情況下都不會執行if
語句的正文。
原因是你有錯誤的方式%
的論據。
的if
改爲:
if (4000 % 3 == 0) {
的%
運算符返回除以第一參數由秒的剩餘部分。
請在downvote時添加評論。因爲這個答案對我來說是正確的+1。 –
這並沒有回答這個問題 - 他在問爲什麼這是真的(這不是......),這與此無關。 – Doorknob
我沒有看到任何跡象表明OP真的想要找到一個模3的餘數......並且它與進入'if'(這不會發生任何一種方式)無關。 –
%modulo division將返回A/B的剩餘部分(由B A分)
所以在這裏3%15
和3%,4000等於3
你不能有少數被更大數量除以或餘。你有
if(3 % 4000==0){}
所以做這種手術之前,你可以使用的方法,並通過2號給它,這將首先檢查第一個數字大於或大於數量較少比它就會相應地執行。 即
//you may change the return type.
void multiple(int a, int b)
{
if(a>b)
{
if(a % b == 0)
{
//TO DO Code here
}
}
else
{
if(b%a==0)
{
//TO DO Code here
}
}
}
它正常工作與每個值,其餘的將永遠是3,那麼「如果」將不會執行。如果妳需要檢查0,更好的方式來寫「如果」將是,
if (!(3 % 4000)){
// Code to execute
}
在這種情況下,當有一個餘數爲0。此外還要檢查與變量的類型,一旦只執行。
一種可能性是,如果你將其聲明爲有符號短int(0到127)並將4000存儲到它,溢出發生並且變量值將被設置爲最小值(即零(0))。所以,在你的情況下,它執行'if'。只是給你一個想法。
當A%B == 0則A是B的多個如果a> = B
用於< B,A永遠不會成爲一個倍數b,除非它是零
不,它確實*不是真的。你誤診了它。試着想出一個簡短但完整的程序來證明問題 - 你會發現'3%4000'確實是'3'。 –
給出您當前的代碼片段。 「if」條件都不會成立。我不明白你如何得到你所說的結果。 –