Co standard C mówi o bitowaniu z większą liczbą bitów niż szerokość typu?
Rozważ następujący kod:
int i = 3 << 65;
Spodziewałbym się, że wynik będziei==0
, jednak rzeczywisty wynik jesti==6
. Przy niektórych testach znalazłem to z następującym kodem:
int i, s;
int a = i << s;
int b = i << (s & 31);
wartościa
ib
są zawsze takie same.
Czy standard C mówi coś o przesunięciu więcej niż 32 bitów (szerokość typuint
) czy to jest nieokreślone zachowanie?