有符号短整数和无符号短整数区别

我运行这个程序时,设j=40000,输出-25536 40000
设j=50000,输出-15536无规律他们的关系&区别是什么呢?
#include <iostream>
using namespace std;

int main()
{
short int i; // 有符号短整数
short unsigned int j; // 无符号短整数

j = 40000;

i = j;
cout << i << " " << j;
system("pause");
return 0;
}

有无符号的整数,在计算机内存中是区别不出有无符号的,而是在程序里有区分。计算机中数据是以补码形式存放的,用二进制表示。比如:默认无符号型,只要在类型符号加

unsigned就是无符号型,Int是有符号的。其实说白了就是:定义带符号整数的,则可以存储正负整数,定义无符号整数的,则只可以存储正整数。追问

那我上面的程序怎么解释?为什么会有不同的值?

温馨提示:内容为网友见解,仅供参考
第1个回答  2018-10-08
无符号短整数范围 0 到 65535
有符号短整数范围 -32768 到 32767
超过范围后 32767+1 输出为 -32768
所以50000输出为 -32768+50000-32768=-15536
第2个回答  2018-08-02
无符号整型是 unsigned int 表示数的范围是 0-65535
有符号整型 int 表示数的范围是 -32768到32767
第3个回答  2018-09-02
short int是2个字节的 范围是 -2^(15)到 2^(15)-1 最大32767
40000>32767 发生了overflow溢出
short unsigned int同样2字节 但unsigned没有负数 范围是 0 到 2^(16)-1 最大65535
40000<65525 没有overflow 正常显示
第4个回答  2017-08-25
short int范围是-32768 ---32768,40000已经超出了,short unsigned int范围是
0-65536,j=40000时,i的值是40000-32768-32768=-25536

有符号短整数和无符号短整数区别
有无符号的整数,在计算机内存中是区别不出有无符号的,而是在程序里有区分。计算机中数据是以补码形式存放的,用二进制表示。比如:默认无符号型,只要在类型符号加 unsigned就是无符号型,Int是有符号的。其实说白了就是:定义带符号整数的,则可以存储正负整数,定义无符号整数的,则只可以存储正整数。

STM32中unsigned short和unsigned int有什么区别呢??
一、数据类型不同 1、unsigned short:unsigned short的数据类型为无符号短整数类型。2、unsigned int:unsigned int的数据类型为无符号整数类型。二、占用空间不同 1、unsigned short:unsigned short的内存占用空间为两个字节,16位。2、unsigned int:unsigned int的内存占用空间为为四个字节,32位。三...

c语言中unsignedshort和short字节
这两种数据类型在内存中占用的空间是相同的,因为它们都是短整型,但它们的区别在于如何解释这些位上的值。有符号的 `short` 可以表示正数和负数,而无符号的 `unsigned short` 只能表示非负整数。在处理二进制数据时,这种差异非常重要,因为它决定了变量的值和范围。在进行低层次编程或处理二进制数据时...

c语言,什么是有符号整型与无符号整型?麻烦再举个例子。谢谢
有符号整型 要 消耗 1 位 用来做符号,剩下的15位 用来存数值。与无符号整型 不需要符号位,16位 用来存数值。所以他们表示的数值范围不同。有符号整型,正数用原码表示,负数用补码表示,最小负数(绝对值最大)是 1000 0000 0000 0000 (16进制 0x8000), 最大正数 0111 1111 1111 1111 (16...

关于欧姆龙编程里的有符号整数和无符号整数是什么意思?可以用一个简...
有符号和无符号有两个本质区别:有符号顾名思义,就是有正负号,所以可以表示负数;而五符号只能表示正数 有符号的范围,因为符号的标志占了一个位,所以,它的绝对值的范围肯定比有符号短 这个在编程上,只要用特定的有符号指令就好了,其实没什么特别的 ...

ushort什么意思
`ushort`即`unsigned short`的缩写,是一种无符号的短整型数据类型。它通常用来存储相对较小范围的整数。这种类型的变量可以存储正的整数,因为没有负数的表示空间。由于是无符号类型,其值的范围是从0到某个确定的最大值。具体的最大值取决于操作系统和编程语言的实现,通常是介于数千到数万之间。2....

C语言中unsigned short和short字节
在C语言中,unsigned short和short的数据存储方面有显著区别。首先,尽管它们在占用字节数上是相同的,都是1个字节,但unsigned short表示无符号整数,其范围从0扩展到了65535。相比之下,short类型会将最高位用于表示符号,这意味着它的数值范围是从-32768到32767,比unsigned short的范围要小。unsigned ...

在c++中,unsignedshort与int的具体区别是什么
区别概述:1. 数据类型和存储大小不同:unsigned short和int在数据类型和存储大小上存在差异。2. 数值范围不同:由于有无符号的差异,两者的数值范围不同。3. 应用场景不同:由于特点差异,它们在不同应用场景下有各自的优势。详细解释:数据类型和存储大小不同 `unsigned short`是一个无符号短整型,...

c语言中的unsigned和signed有何区别?
需声明无符号类型就要在类型前加上unsigned。无符号整型和有符号整型的区别在于无符号类型可以存放的正数范围比有符号整型中的范围大一倍,因为有符号类型将最高位储存符号,而无符号类型全都储存数字。在16位系统中一个int能存储数据的范围是-32768~32767,unsigned能存储的数据范围是0~65535。

c语言%hhu%hu等含义区别
3. %hu的含义:与`%hhu`不同,`%hu`是用于格式化输出或输入无符号短整型数据的格式控制符。“hu”表示“small unsigned integer”,但它适用于更大的数据类型——短整型。在处理需要更大范围的整数值时,通常使用`%hu`。4. 区别总结:两者的主要区别在于它们处理的数据类型不同。`%hhu`用于处理较...

相似回答