2020-12-16unsigned

本文探讨了在C++中使用`int`类型数组进行大小比较时出现错误结果的问题。作者通过示例代码展示了当使用`int`、`double`或`float`时的不同行为,并提出了可能的原因:`int`类型的溢出和二进制比较。代码中,`sizeof(a)/sizeof(a[0])`用于计算数组元素个数,但在某些情况下,可能会导致意外的负数结果。作者推测这可能与计算机中负数的补码表示方式有关。
摘要由CSDN通过智能技术生成
#include<iostream>
using namespace std;
int main()
{
	int a[]={1,2,3,4};
	cout<<sizeof(a)/sizeof(a[0])<<endl;
	if(-1<sizeof(a)/sizeof(a[0]))
		cout<<"Hello,world!\n";
	else
		cout<<"error!\n";
	return 0;
}

这是我在查找有关unsign资料的时候看见别人提出的,在c++上面试了一下,果然是这样,如果用double或者float都是可以正常得到结果的,int却是错的结果。
用int,double,float强制转换输出时都是显示-1。
猜测int(默认类型)可能是用unsigned int(-1)来写的,输出为4294967295
而且负数在计算机中本来就是以补码的形式存放,在8位二进制数中是1开头,所以我也有猜测是不是比较大小的符号是比较的二进制码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值