對不起,這個新手的問題,但我不能對谷歌什麼,我需要知道找到。關於用C++回報
我明白回報,但不明白這...這是什麼意思呢?
return (tail+1)%N == head%N;
非常感謝耐心。
對不起,這個新手的問題,但我不能對谷歌什麼,我需要知道找到。關於用C++回報
我明白回報,但不明白這...這是什麼意思呢?
return (tail+1)%N == head%N;
非常感謝耐心。
它返回true
或false
,取決於表達式是否是真還是假。
它一樣:
if ((tail+1)%N == head%N)
return true;
else
return false;
你返回一個布爾值。該值表示是否將除以N(尾+ 1)的其餘部分是相同的頭部。
它計算表達式,並返回結果。在這種情況下它是在比較了兩種模運算,其結果要麼是true
或false
這將被退回。
如果分割爲尾+ 1和頭部的其餘部分是相同的
例如如果尾巴是2,則返回true,頭是1且N爲2
(尾+ 1)%N是1
頭%N是1個太
所以整個表達式返回true
此
(尾+ 1)%N ==頭%N
返回一個布爾值,無論是真或假。該語句意味着加1而與N分頻後得到的跟蹤(軌跡+ 1),其餘的後等於頭N.%劃分的剩餘部分被用於帶餘除法
(%)。模數是給出兩個值的除法的餘數的運算。
檢查此鏈接爲C++運算符:http://www.cplusplus.com/doc/tutorial/operators/
答案很簡單:
因爲==
操作你的函數會返回一個bool
,這意味着它只能是true
或false
的。等效會是這樣的:
return 5 == 4;
這將返回false
因爲5不等於4。
龍答:
而是在一行寫這個的,你可以最多把它分成多行代碼。讓我們姑且認爲tail
,head
和N
是整數值,那麼你可以把它寫這樣的:
int x, y;
x = (tail+1)%N;
y = head%N;
if (x == y)
{
return true;
}
else
{
return false;
}
現在,在這個代碼有可能也是%
迷惑你一點。 %
被稱爲Modulus Operator
,可以給你餘下的算術運算。在一個簡單的例子,這將意味着:
10 % 3 = 1
因爲10/3
是3用的1其餘因此,爲了更清楚,讓我們只是讓你的具體問題,另外一個例子:
讓我們姑且認爲tail=10
,head=6
和N=2
。然後你會得到這樣的事情:
x = (10+1)%2
x = 11 % 2
x = 1
y = 6 % 2
y = 0
y != x
這將返回false
原因x
和y
是不相等的。 (如果您將運行與給定值,例如代碼)
要了解更多有關你可以看看here,或者只是任何其他基本的C++教程Modulus
。
除了它更習慣用法,對知道C++的人更易讀。 – 2012-03-23 09:31:33
IMO需要將括號內的整個表達式(即'return((tail + 1)%N == head%N);'as'in if')更具可讀性。但我只是喜歡多餘的括號,以消除任何歧義。 – Rup 2012-03-23 09:36:27