在C语言中长度相同的有符号与无符号整型数间,原样赋值时为什么值不同

作者&投稿:叶洋 (若有异议请与网页底部的电邮联系)
c语言中整型数据中,有符号与无符号是什么意思,能举例说明下么?~

有符号就是可以表达负数有符号位
无符号就是不能表示负数没有符号位
如基本整型 (int) 数的范围为-2 147 483 648~2 147 483 647 即-2^31~(2^31-1)
无符号整型(unsigned int) 数的范围为0~4 294 967 295 即0~(2^32-1)
通俗一点就是输出一个可以输出负数一个不行
望采纳,谢谢

有符号:用最高为来表示符号位 , 1表示负,0表示正
无符号:全部用来表示实际数。

两者的取值范围不同
有符号整型为 -32768 到 32767
无符号整型 为 0 到 65535

在c语言中无符号(unsigned)和有符号(signed),数据范围不同,无符号和有符号的区别就是有符号类型需要使用一个bit来表示数字的正负,从而导致负数或者超过signed int数据范围时,在两者中的表示值不同,示例代码如下,
#include <stdio.h>

int main(int argc, char *argv[])
{
unsigned a;
int b=-1;
a=b;
printf("%d %d-> %u\n",sizeof(int),b,a);//输出-1 -> 4294967295(0Xffffffff,-1的补码)
a=2147683648;//0X80000000(-2147683648的补码)
b=a;
printf("%d -> %u\n",b,a);//输出-2147683648 -> 2147683648
return 0;
}

win32平台下,无符号(unsigned)和有符号(signed)int都占用4个字节,数值范围如下,
有符号int:-2147683648 到2147683647(- 2^31 到2^31- 1);
无符号int:0到4294967295(0 到2^32 - 1);
无符号类型int能保存2倍于有符号类型的正整数数据,多1个bit位。正数的补码就是其自身,负数的补码是在其原码的基础上, 保持符号位不变, 其余各位求反(反码),最后+1(即在反码的基础上+1)。

4字节储存的数据范围是00000000-FFFFFFFF
-1的补码是100000000-1=FFFFFFFF 最高位为符号位
作为无符号输出的话FFFFFFFF=16^8-1=2^32-1=4294967295

在VC里,一个unsigned 是占4个字节的
由于无符号,所以最高位的1并不是符号位
2的32次方-1 刚好为4294967295
所以……

补充:
首先要知道一点 数的运算是是以补码进行的
b即-1的补码是
1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 (ffffffff)
而a为无符号数,所以它的补码原码相同,所以有了这种结果
你认为为1,可能你是直接以原码算的,而且还忽略了最高位1吧

不太清楚 就不去误导你了
建议你看一下 二进制 原码 反码


在C语言的变量类型说明中,int,char,float等类型的长度是否是固定的?
char 长度固定, 1个字节 float 长度固定, 4 个字节 short int 长度固定, 2个字节 long int 长度固定, 4 个字节 int 长度 取决于编译器把它处理成 long 还是 short。 例如,VC++ 处理成 long int, TC 处理成 short int. 当然可以用 sizeof(int)算出。

C语言中字符串小于字符串吗?
结束比较,返回他们之间的差值(ASCII码值)。(负值前字符串的值小于后字符串,正值前字符串大于后字符串)3、如果第一个字符和参数的第一个字符相等,则以第二个字符和参数的第二个字符做比较,以此类推,直至比较的字符或被比较的字符有一方全比较完,这时就比较字符的长度。

c语言中各数据类型的存取空间长度的排列顺序是?
浮点数不能用来表示精确的值,如货币,default: 0.0f,对应的包装类:Float。double:双精度、64位、符合IEEE 754标准的浮点数,8 字节2.3E-308 到 1.7E+308,浮点数的默认类型为double类型,double类型同样不能表示精确的值,如货币,default: 0.0d,对应的包装类:Double。

c语言中* p=& a的表示方法是错误的?
3、p=&a的意思是:将a的地址赋给指针p。4、区别:*p是一个值;p是一个地址;两者完全不相同。介绍 指针,是C语言中的一个重要概念及其特点,也是掌握C语言比较困难的部分。指针也就是内存地址,指针变量是用来存放内存地址的变量,在同一CPU构架下,不同类型的指针变量所占用的存储单元长度是相同...

c语言中数组长度怎么设置?
定义数组时在中括号内写上代表长度的数字,定义一维数组和二维数组是一样的。注意长度是直接用数字大小来代表,而索引时是从0开始算的!例如:include<stdio.h>main(){ int a[5];\/\/定义一个长度为5的一维数组a int b[5][6];\/\/定义一个5行6列的二维数组b}在定义数组时可以不定义长度...

C语言中共用体变量所占内存长度等于?
C语言中共用体变量所占内存长度等于其中长度最长的那个成员的长度

C语言字符串
因此C风格ASCII字符串的长度和其字符数是不同的,除了C风格字符串(以空字节结尾的字符串),其他ASCII字符串也有长度和占用存储空间相同的情况,比如STL中的string其内存占用空间就和字符长度相同,因为它不是用空字符来标识字符串结尾的。所以对于ASCII字符串,其长度和所占字节数可能相同。而对于宽字符...

C语言 字符数组在定义时实际长度能不能等于有效长度 不给\\0留空间_百 ...
不对 首先 初始化字符串 有 char a[5]={'a','b','c','d','e'}; 这种方式 还有 char a[5] ="abcd";这种方式 后者才会自动添加结束符 前者不会 至于char a[5]={'a','b','c','d','e'}; 这种对不对 这个是根据实际使用情况决定的 不是说没加结束符就一定不对 举个例子 ...

在c语言中不同数据类型的长度是由什么决定的
归根结底都是A。或者说是编译器。

c语言中字符串常量长度是多少?
C语言,字符串常量”\\t\\”name\\\\address\\n”的长度为15。strlen(hello word):字符串为“hello word”这种字符串常量,系统会在其后自动补上'\\0';但是求字符串长度的函数strlen()只要遇见'\\0',就会返回函数值,'\\0'不算在其中。所以返回值为10(空格也算一个字符)。strlen(hello\\0world):...

兴隆台区18539372056: C语言中的有符号和无符号是什么意思给仔细讲讲
牟李申达: 有符号就是signed:在存放整数的储存单元中,最左边的一位是表示符号位,该位为0,表示数值为正,1为负. 无符号就是unsigned:就是最左边的那一位没有符号位

兴隆台区18539372056: 为什么unsigned int变量与int变量长度相同 -
牟李申达: 范围不同.无符号数,>=0,最高位也表示数的大小.int,有符号,可以表示负数,最大值大约是无符号最大 值的一半.

兴隆台区18539372056: 在C语言中有符号整数和无符号整数有什么差别? -
牟李申达: int是有符号的. unsigned才是无符号的. 它们所占的字节数其实是一样的,但是有符号的需要安排一个位置来表达我这个数值的符号是什么,因此它说能表示的绝对值就要比无符号的少一半. 举个例子,我们有一个1个字节的整数(虽然这种类型不存在),那么无符号的就是这样:00000000-11111111 这个就是无符号的范围.一个字节是8位. 下面有符号的,因为第一个位要用来表示符号,那么就只剩下7个位置可以用来表示数了 0000000-1111111 因为有符号所以还可以:-1111111-00000000 明白了吗?

兴隆台区18539372056: 在C语言里数据中的有符号与没符号,符号指的是什么了. -
牟李申达: 无符号就是没有减号. 比如:3, 4, 5, 6, 7 ,2332, 234234都是Unsigned [int],无符号的基本整型. 而-3 , -4 , - 5 等就是[signed] int,有符号整型 无符号型变量不能存放负数. 具体的你在查查资料,如果我说的有问题一定给我回消息,上面的信息是对的,只是不太全面.

兴隆台区18539372056: C语言中的有符号和无符号是什么意思给仔细讲讲 -
牟李申达: 譬如 char x;//是有符号,其能表示的整数大概 -127~+128 而 unsign char x;相当于将负数翻上来,只表示正数:0-255int x; //-32... +32... unsigned int x; //+65..... 更多交流,进我空间

兴隆台区18539372056: C语言中的有符号类型和无符号类型有什么区别 -
牟李申达: 有符号类型可以输入正负均可. 无符号类型不能有负数的.

兴隆台区18539372056: C语言中 有符号变量与无符号变量的区别是什么? -
牟李申达: 有符号变量与无符号变量区别在于是否区分数据的正负 有符号变量一般要专门留出1bit来保存符号

兴隆台区18539372056: C语言里怎样理解长整型 短整型 和无符号型变量和常量? -
牟李申达: 1、变量:是一块内存区域,一块内存包含两个属性,一个是地址,一个是存储的内容,即值.所以在c语言中每个变量都有一个地址,也有自己存储的内容. 2、常量:指的是不会被修改的量,这个概念实际上来自汇编语言中的立即数概念,...

兴隆台区18539372056: C语言中有符号和无符号是什么意思解释一下 -
牟李申达: 在C中,默认的基础数据类型均为signed,现在我们以char为例,说明(signed) char与unsigned char之间的区别. 首先在内存中,char与unsigned char没有什么不同,都是一个字节,唯一的区别是,char的最高位为符号位,因此char能表示-127~127,unsig...

兴隆台区18539372056: C语言里区分有符号型和无符号型,两者各有什么用意?如题 谢谢了 -
牟李申达: 当然有了,虽然它们在书面上的差别只是一个unsigned,但是它们的实质是取值范围不同了!不过一般情况下无符号值的最大值会是有符号值大小的二倍左右!比如int取值是-128~128,而加了一个unsigned以后呢,取值是从0~255了!希望采纳

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网