C语言中unsigned和signed在声明时有什么作用

时间:2018.10.30 发布人:qlff685se

C语言中unsigned和signed在声明时有什么作用

已解决问题

谷歌qlff685se用户在2018.10.30提交了关于“青木川古镇C语言中unsigned和signed在声明时有什么作用”的提问,欢迎大家涌跃发表自己的观点。目前共有1个回答,最后更新于2025-02-27T20:57:56。希望大家能够帮助她。

详细问题描述及疑问:期待您的答案,感谢你,我会记得你对我的好的 !

希望以下的回答,能够帮助你。

第1个回答

用户名:匿名用户  

1、unsigned的作用就是将数字类型无符号化,例如int型的范围:-2^31~2^31-1,而unsignedint阿优冷练欢材角友的范围:0~2^32。看起来unsigned是个不错的类型,尤其是用在自增或者没有负数的情况。但是在实际使用中会出现一些意外的情每料十王四费王和模远况。

2、signed在默认情况下声明的整型磁怂丝模变量都是有符号的类型(char有点特别),如果需声明无符号类型的话就需要在类型前加上unsigned。无符号版本和有符号版本的区别就是无符号类型总歌算误圆照能保存2倍于有符号类取急财草文此异洲连选型的正整数**。

扩展资料:

unsigned和signed的区别

1、所有比int型小矛纪死的**类型(包括char,signedchar,unsignedchar,short,signedshort,unsignedshort)转换为好空承医非int型。如果转换后的**会超出int型所能表示的范围的话,则转换为unsignedint型

2、bool型转化为int型时,false转化为0,true转换为1;反过来所有的整数类型转化为bool时,0转化为false,其它非零旨转为true

3、如果表达款吗式中混有unsignedshort和int型时,如果int型**可以表示所有的unsignedshort型的话,则将unsignedshort类型的**转换为int型,否则,unsignedshort类型及int型都转换为unsignedint类型

举个例子,在32位机上除刑已封承int是32位,范围–2,147,48史新疫消减认持反的需3,648to2,147,483,647,unsignedshor冲汽款细被露贵观侵声合t是16位,范围0to65,535,这样int型的足够表示unsignedshort类型的**,因此在混有这两者的运算中,unsignedshort类型**被转换为int型

4、unsignedint与long类型的转换规律同3,在32位机上,unsignedint是32位,范围0t烧溶金移超田防o4,294,967,295,long是32位,范围–2,147,483,648t渐示河预真o2,147,483,647,可见long类型无住强何子层米模现不够表示所有的unsi衡管阳答触gnedint型,因此在混有unsignedint及long的表达式中,两者都被转换为unsi干善编菜对跳意主千发gnedlong

5、如起果表达式中既有int又有unsignedint,则所有的int**都被转化为unsignedint类型