关于C语言的无符号整型?

为什么换个数据类型就不一样

有符号和无符号的区别就在于最高位
有符号的最高位是符号位,1表示负数,0表示正数
无符号所有数位都是表示数值的
当输入-1的时候,相当于赋值c=-1,根据补码规则,-1的十六进制在int类型下是0xffffffff,按照%d输出-1,按照%u输出无符号就是2的32次幂-1,也就是你输出的那个值

而如果定义unsigned char,实际上用%u或者用%d输入是有风险的,因为会实际赋值4个字节,本质上是越界的,正确做法是%hhd或者%hhu
不管怎么样,还是把赋值成了0xff,至于越界的三个字节赋值给谁就不知道了
用%u或者%d输出就都是255了,也就是2的8次幂-1这样的一个值
如果定义的不是unsigned char c,而是char c,那么你会得到另一个不同的结果了
温馨提示:内容为网友见解,仅供参考
第1个回答  2021-12-18
这是因为这两种数据类型所占的字节数不一样,因为大家都是unsigned,所以输入负10,他们填充的数据都是二进制全1,只是int,填充的是四个字节,而char填充的是一个字节。所以当以int形式输出时,系统把char的八个二进制位全部填充在了int的最低位,前面更高的位上都是0,所以就造成这时输出的两个都是正数。

c语言中,什么叫无符号整型数?
无符号整型数是C语言中的一种数据类型。具体解释如下:一、无符号整型数的定义 无符号整型数是一种整数类型,其特点是所有的数字位都被用来表示数值本身,没有任何一位用于表示正负符号。因此,其能表示的正整数范围远大于有符号整型数。例如,在一个标准的32位系统中,无符号整型数的范围是从0到429496...

c语言的unsignedint是什么意思?
C语言的unsigned int是无符号整型变量的意思。1. unsigned int定义 在C语言中,`unsigned int`是一种整型数据类型,用于存储整数。与常规的`int`类型不同,`unsigned int`表示的是非负整数,即它不会有负值。这是因为`unsigned int`是无符号的,即不包含表示负数的符号位。2. 存储范围 由于`unsigned...

关于C语言的无符号整型?
有符号的最高位是符号位,1表示负数,0表示正数 无符号所有数位都是表示数值的 当输入-1的时候,相当于赋值c=-1,根据补码规则,-1的十六进制在int类型下是0xffffffff,按照%d输出-1,按照%u输出无符号就是2的32次幂-1,也就是你输出的那个值 而如果定义unsigned char,实际上用%u或者用%d输入是...

c语言中什么是基本无符号整型(unsigned int)?特别是这个无符号,它代表...
整型在C语言中有无符号(unsigned)和有符号(signed)两种类型,其中默认情况下声明的整型变量都是有符号的,若需声明无符号类型则在类型前加unsigned。无符号版本相较于有符号版本能保存2倍的数据,如在16位系统中,int的范围是-32768~32767,而unsigned的范围为0~65535。在计算机中,整数以补码形式存放...

C语言中的无符号数据类型有哪些呢?
无符号整型,通常占用四个字节(32位),取值范围是 0 到 4294967295。unsigned long int: 无符号长整型,占用四个字节或八个字节,取值范围是 0 到 4294967295 或 0 到 18446744073709551615。unsigned long long int: 无符号长长整型,占用八个字节(64位),取值范围是 0 到 18446744073709551615。

c语言 什么叫无符号整型变量 ,与整型变量有何区别
无符号整型变量,意指在数据存储中不包含负号标记的整型变量。例如,在8位机中,假设一个FF表示的有符号整型为-127,而作为无符号整型,其则表示为255。无符号整型变量在编程中主要用于存储非负数。与整型变量相比,无符号整型变量在数值表示上有一个显著的区别。整型变量在计算机内部通常以补码形式存储...

C语言的unsigned int是什么意思?
C语言中的unsigned int代表无符号整数类型。在C语言中,无符号整型的特点在于它们不使用负数的表示方式,所有的数值都是正数。通常,int类型占用4个字节(32位),而无符号版的unsigned int同样为32位,能够表示的数值范围从0到4294967295。这个范围的边界是由最高位的0和32个1共同构成,也就是二进制...

C语言 无符号整型的输出
C语言中关于无符号整型的输出,确实存在一定的混淆。通常情况下,如果题目中没有明确指定int的位数,答案可能会因平台和编译器的不同而有所差异。在VC6.0中,int通常被定义为32位,这意味着-1在无符号表示下应该是0xffffffff,而不是题目中提到的0xffff,也就是65535。然而,如果题目假设int是16位的...

无符号整型是什么意思
C语言中无符号字符型其实就是是长度为1个字节的整数,从本质上说也是整数类型,通常用来存放ASCII码。整型分为无符号(unsigned)和有符号(signed)两种类型,默认整型变量是有符号的类型,char有点特别。需声明无符号类型就要在类型前加上unsigned。无符号整型和有符号整型的区别在于无符号类型可以存放的...

C语言中,什么叫无符号整型数?
C语言中,无符号整型数是不带正负表示符号的整型数。C语言在计算机里编译时数都是用二进制表示的,如果最左边这一位不用来表示正负,而是和后面的连在一起表示整数,那么就不能区分这个数是正还是负,就只能是正数,这就是无符号整型数。无符号整型数常用于表示地址、索引等正整数,它们可以是8位、16...

相似回答