7
考慮下面的代碼:C標準中有關偏移比位寬的更多位的說法是什麼?
int i = 3 << 65;
我希望的結果是i==0
,但實際的結果是i==6
。對於某些測試中,我發現,用下面的代碼:的a
和b
int i, s;
int a = i << s;
int b = i << (s & 31);
的值總是相同的。
C標準是否會說有關移位超過32位(類型爲int
的寬度)的內容還是這種未指定的行爲?
「對我來說足夠好」 - 對每個人都足夠好,因爲標準包含完全相同的語言。 :-)請注意,您也可以從http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf免費獲得C99 + TC3,並且它也具有相同的語言,所以即使你沒有標準本身,你可以很確定它說什麼! –
您還可以在這裏獲得一個更加方便讀者的html版本:http://port70.net/~nsz/c/c99/n1256.html –
@R ..,哦,謝謝,那樣會更容易閱讀比PDF。 :) – sarnold