c++ unsigned和int类型转换及运算

一、规则总结

1. 在c++中,如果赋值给无符号类型一个超过它表示范围的值(如负数),结果是初始值对无符号类型表示数值最大值取模后的余数。

2. 在c++中,如果表达式中同时有无符号类型和有符号类型,会默认将有符号类型转换为无符号类型进行运算,运算结果也是无符号类型。

二、以int和unsigned为例

1. 如果赋值给unsigned一个负数值,结果是什么?结果是将该负数对unsigned表示数最大值取模后的余数。

(1)unsigned表示数最大值

在大部分编译器中该类型占4个字节,则最大值是2的32次方,为4294967296。

(2)负数的取模运算

负数的取模运算和数学中的取余运算不同,区别主要体现在:取模运算商是向负的无穷大取值,而取余运算商是向0取值。举例说明:如-3对2取余商为-1,但-3对2取模商则是-2。

(3)赋值给unsigned一个负数值时实际得到的结果

                         

上述程序的输出结果是:


结果是怎么算出来的呢?

u=-1,-1除以4294967296,商是-1,而取模后的余数是4294967296-(-1*-1)=4294967295

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
### 回答1: 有什么区别? unsigned short 和 unsigned short int 是等价的,都表示无符号短整型,它们的取值范围都是 到 65535。在 C 语言中,short 和 short int 也是等价的。 ### 回答2: C的数据类型中,unsigned short和unsigned short int是等价的,都表示无符号短整数。 unsigned表示无符号,也就是没有正负号,只能表示非负整数。short表示短整数,占2个字节(16位),范围为0到65535。 unsigned short和unsigned short int虽然在写法上有差异,但语义上是完全一样的,都表示相同的数据类型。在C语言中,类型名可以省略int关键字,所以unsigned short和unsigned short int是等效的写法。 这两个类型常用于对不需要负数的整数进行存储和处理。由于省略了符号位,无符号整数类型可以表示更大的正数范围,但不能用来表示负数或需要进行算术运算的场景。 通过使用unsigned short(int)类型,我们可以节省内存空间,特别是在对大量非负整数进行存储和计算时。然而,在使用该类型时需要注意溢出问题,因为它的取值范围有限,当数据超过该范围时可能会导致数据丢失或错误结果。 总的来说,unsigned short和unsigned short int都表示无符号短整数类型,在C语言中可以互换使用,都适用于存储和处理不需要负数的非负整数数据。 ### 回答3: c语言中,unsigned short 和 unsigned short int 是相同的数据类型,用来表示无符号的短整数。unsigned short 被广泛使用,unsigned short int 则是对该类型的完整命名。在C语言中,short intint 可以互换使用,因此 unsigned short int 也可以简写为 unsigned short。 unsigned short 和 unsigned short int 可以保存范围在0到65535之间的整数值。其中,unsigned 表示该类型的变量只能保存非负的数值,short 表示该类型的变量占用的内存空间较小,通常为2个字节。因此,unsigned short 和 unsigned short int 可以用来节省内存空间,特别适合用于表示较小的正整数。 由于 unsigned short 和 unsigned short int 并无本质区别,所以在使用时可以视个人习惯来选择使用哪种命名方式。根据C语言的命名规范,一般情况下建议使用 unsigned short,因为它更加简洁明了。但是,在某些特定场景中,也可以使用 unsigned short int 来强调该变量的数据类型,提高代码的可读性。 总之,unsigned short 和 unsigned short int 都是C语言中表示无符号短整数的数据类型,没有实际上的差别,只是在命名上稍有不同。在使用时可以根据个人习惯和项目要求选择合适的命名方式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值