在C语言中,可以给一个无符号整型变量赋值一个负数吗

如题所述

可以,但是结果会出错,负数在计算机中最高位为1,作为符号标志(正数为0),但是如果赋给无符号整型变量,最高位的标志位就会变成数值位,计算时把这个1当成数值。
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-12-22
可以的啊
第2个回答  2011-12-22
可以

在C语言中,可以给一个无符号整型变量赋值一个负数吗
可以,但是结果会出错,负数在计算机中最高位为1,作为符号标志(正数为0),但是如果赋给无符号整型变量,最高位的标志位就会变成数值位,计算时把这个1当成数值。

C语言中无符号整数变量赋负整数为什么不报错,而且打印这个数也是...
给一个无符号变量赋一个负数,就把这个“负数”的补码当正数对待了(unsigend的级别高于int)——这和给一个浮点变量赋一个整型数时被提升为浮点型一样——这符合C\/C++的自动类型转换规则,所以不报错。至输出还是负数恐怕不对,除非你强制为int型输出,否则输出是无符号的。

C语言问题 给一个无符号数赋值一个负数会出现什么结果?负数依旧是按 ...
==是等于判断,并不是赋值 负数在计算机中最高位为1,作为符号标志(正数为0),但是如果赋给无符号整型变量,最高位的标志位就会变成数值位,计算时把这个1当成数值 ---物联网校企联盟技术部

关于在C语言中无符号整形存储负数问题
你的理解是对的。最高位为1时,对于有符号来说,这个数是负数,而对于无符号数而言,由于最高位也是有效存储位,所以可以存储更大范围的数。话再说回来,既然是无符号数,输出格式应该是"%u",而不是"%d",这样才能做到“表里如一”,“改头换面”只会乱了自己,这不是游戏,严谨是必须的。

C语言-带符号整数和无符号整数问题
在C语言中,如果定义一个变量为无符号型,那么这个变量只能表示大于等于零的数,而有符号数就是包含负数,如果定义一个变量为有符号型,那么这个变量可以赋值为负数也可以赋值为正数。比如,无符号的int型,表示的范围一般为:0~65535,而有符号的int型则为:-32768~32767 ...

c语言中给变量赋值为-1,怎么理解?
变量一般都是要赋初值的。是不是这个数据代表了什么的特殊含义?赋初值为-1代表了一个不满足一定条件的值。然后在程序运行的时候再更改,如果没有更改的话,这个数字维持原状-1。

C语言中unsigned int还能显示负数
无符号数和有符号数 在存储上并没有区别 在使用的时候 如果符号不匹配 C会做自动转换 比如 你定义了无符号的a然后赋值一个负数 -1 就等同于 a = (unsigned int)-1;得到的a值实际上是0xffffffff (取决于编译器,32位编译器为这个值)如果用%u输出 那么就会输出这个数字对应的10进制值 为2^32...

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

C语言char类型可以赋值为-1吗?
char占一个字节,也就是8个二进制位,但它表示的是有符号的类型,所以表示的范围是-128~127;因为-1是在char表示的范围是-128~127内部,所以char类型完全可以赋值为-1

C语言unsigned int
那是因为你在定义a的时候就错了, 无符整形数就是不带符号的意思, 而你定义了一个符号, 这样编译器就不会把-100赋给a,而是让a发生一个类型转换, a是无符号的 -100是有符号的整形数,因此发生一个类型转化,-100被转化为了无符整数(但是它绝对不是变成了100)然后复制给a,这是为啥呢?继续往下看...

相似回答