【无标题】

无符号数和有符号数的转换
考虑下面一个程序:

float sum_elements(float a[],unsigned length){
	int i;
	float result =0;
	for(i=0;i<=length-1;i++){
		result +=a[i];
	}
	return result;
}

当length为0时,程序会出错。0-1这个式子会产生溢出,结果就是i<=Umax(无符号数最大值);0是unsined int,1是int,在运算时1会转化为unsigned int。结果得到-1(16位情况下,-1的补码表示为:0xFFFF),-1转化为unsigned就是无符号类型的最大值。


版权声明:本文为qq_45335146原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。