Consider the following code:
int i = 3 << 65;
I would expect that the result is i==0
, however the actual result is i==6
. With some testing I found that with the following code:
int i, s;
int a = i << s;
int b = i << (s & 31);
the values of a
and b
are always the same.
Does the C standard say anything about shifting more than 32 bits (the width of type int
) or is this unspecified behavior?
Question&Answers:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…