всю свою сознательную жизнь я думал, что оператор << НЕ ЯВЛЯЕТСЯ ЦИКЛИЧЕСКИМ, но вопрос возник когда в правильно работающей проге нашел логическую ошибку на ровном месте, сам прикол сводится к такому коду:
for (i = 0; i < 64 + 1; i++)
printf("i = %d; x = 0x%08x\n", i, (0x1 << i));
printf("\nbut i = %d; x = 0x%08x\n", 37, (0x1 << 37));
i = 0; x = 0x00000001
i = 1; x = 0x00000002
...
i = 30; x = 0x40000000
i = 31; x = 0x80000000
i = 32; x = 0x00000001 // !!!
i = 33; x = 0x00000002
...
i = 37; x = 0x00000020
...
i = 64; x = 0x00000001 // !!!
but i = 37; x = 0x00000000
скажите, пожалуйста, это фича, и я что-то пропустил в K&R, или эпическая бага?
p.s. в свою очередь >> довольно православен, и значение отличное от нуля у него только при сдвиге на 0