C语言位运算符号的疑问

#include <stdio.h>

#define  uchar unsigned char
int main()
{
	uchar i = 0x0F;
	unsigned long long j = 0x0F;
	printf("%d,",sizeof(long long));
	printf("%ld,",j<<32);
	printf("%#016x,",j<<32);
	printf("%#016x,",i<<40);
	printf("%#016x,",-1L);
	printf("%#016x,",-4);
	printf("%#016x,",4);
	printf("%#016x,",(-4<<1)>>1);
	
	unsigned short k = 0xFF;;
	printf("\n\n\n%#016x,",k<<40);
	printf("%#016x,",k>>40);
	
	short l = -1;;
	printf("\n\n\n%#016x,",k<<40);
	printf("%#016x,",k);
	
	int m = -2;;
	printf("\n\n\n%#016x,",m<<40);
	printf("%#016x,",m>>32);
	return 0;
	//似乎有些类型不会溢出而是循环,仿佛位移运算符号的单元是一个int32或者usigned int32
 } 

8,0,0000000000000000,0x00000000000f00,0x000000ffffffff,0x000000fffffffc,0x00000000000004,0x000000fffffffc,


0x0000000000ff00,
--------------------------------
Process exited after 0.01545 seconds with return value 0
请按任意键继续. . .



猜你喜欢

转载自blog.csdn.net/qq_42820594/article/details/107743962
今日推荐