cout << (4 % ((10^9)+1));
輸出:
0
編譯:G ++ 4.8.4
我不知道爲什麼編譯器打印值爲0。我現在要做的預期產出?
什麼是打印輸出的正確代碼?
cout << (4 % ((10^9)+1));
輸出:
0
編譯:G ++ 4.8.4
我不知道爲什麼編譯器打印值爲0。我現在要做的預期產出?
什麼是打印輸出的正確代碼?
謝謝你解釋這個邏輯。我已經在你的幫助下理解了這個邏輯,這是我解決這個邏輯的解決方案。
cout << (4 % ((10^9)+1)); ==> cout <<fmod(5, (pow(10,9)+1));
我的錯誤是使用^代替POW()和%,而不是FMOD()的。
^
是一個按位異或運算,不是指數。 10^9是3.
所以4 % ((10^9) + 1)
= 4 % (3 + 1)
= 4 % 4
= 0
。編譯器是正確的。
你的意思是std::pow(10L, 9L)
,注意不要溢出一個整型?然後回答將爲4(儘管您必須將std::pow
歸還爲%
運算符的適當整數類型)。
我不知道爲什麼編譯器打印的值是0.我現在要爲 做預期的輸出嗎?
(10^9) == 3
^
操作者在C按位XOR ++。即,在二進制
decimal binary
10 0110
9 0101
0110^0101 == 0011
並且因此:
10^9 == 3
因此:
(10^9) + 1 == 4
和
4 % ((10^9) + 1) == 0
((10^9)+1) = 4
4 % 4 = 0
%運算符返回除法的其餘部分。例如,4/3 = 0和3作爲餘數,所以它將返回3,但4/4 = 1並且沒有餘數,所以它返回0.
*爲什麼*你會希望輸出爲「4」? (這是意見的東西 - 意圖...) – DevSolar
在C++ ^意味着XOR和10 XOR 9 = 3也4%(3 + 1)= 0你必須使用pow函數。 – aghilpro
'10^9 = 3'因爲'^'是異或運算。 – GAVD