处理C语言移位量过大

假设定义一个int类型的变量,int类型在当今32.64位系统中占有4个字节,4byte=32bit,当移位的位数超过数据类型位数时候编译器该怎么处理呢?

答案:

是将【移位量】mod【数据类型位数】

int a = 0xfedcba98;
	int val1 = a << 32;
	int val2 = a >> 36;
	unsigned int val3 = (unsigned int)a >> 40;
	printf("%x,%x,%x", val1, val2, val3);

这一段数据是否和我们理想中的值相似呢?

关于c语言移位量过大_数据类型实际答案和我们理想答案中的0有出入,所以在进行移位时候尽量不超过数据类型位数,保证了编程可读性,避免过于复杂难以理解。

总结:在编程时候保持移位量小于移位值的位数