#include<iostream>
using namespace std;
int main()
{
int a = -1;
unsigned int b = 1;
if(a > b)
{
cout<<"hehe"<<endl;//此为输出,原因无符号与有符号比较,将有符号转换为无符号数了
}
else
{
cout<<"lala"<<endl;
}
char a1= -1;
unsigned char b1 = 1;
if(a1 > b1)
{
cout<<"hehe"<<endl;
}
else
{
cout<<"lala"<<endl;//此为输出,原因二者被转换成int类型了
}
int a2 = -1;
unsigned char b2 = -1;
if(a2 < b2)
{
cout<<"hehe"<<endl;//此为输出,原因将b转换为int类型了
}
else
{
cout<<"lala"<<endl;
}
char a3 = -1;
unsigned int b3 = -1;
if(a3 == b3)
{
cout<<"hehe"<<endl;//此为输出a被扩展为unsigned char,所里两个值一样大了
}
else
{
cout<<"lala"<<endl;
}
unsigned int a4 = 32;
int b4 = -6;
unsigned int c = a + b;
printf("%u",c);
/*
总结:无符号int与有符号int比较大小,转化为无符号int比较;
int类型与无符号int类型比较大小,非无符号int类型转换有int类型比较
无符号int类型和其他类型,如unsigned short,signed short,unsigned char,char比较,其他类型转无符号int类型
非无符号int类型和非int类型如unsigned short,signed short,unsigned char,char比较,一律转换为int类型
理解有符号数和无符号数
1)自己决定是否需要有正负。
2)使用二进制中的最高位表示正负
3) 无符号数和有符号数的范围区别
计算机中的带符号数用补码表示的优点:
1)负数的补码与对应正数的补码之间的转换可以用同一种方法——求补运算完成,可以简化硬件
2)可将减法变为加法,省去减法器
3)无符号数及带符号数的加法运算可以用同一电路完成。
*/
}
有符号与无符号讨论
最新推荐文章于 2023-04-30 22:04:00 发布