精华内容
下载资源
问答
  • unsigned short intshort int转化问题和unsigned intint相加问题1、unsigned short intshort int...unsigned short int的字节数为2,取值范围是0到2的16次方减1,即 0~65535 int的字节数也为2,取值范围是...
    unsigned short int与short int转化问题和unsigned int与int相加问题

    1、unsigned short int与short int转化问题

    unsigned short int a=65535转化为short int型是多少呢?
    unsigned short int的字节数为2,取值范围是0到2的16次方减1,即 0~65535   
    int的字节数也为2,取值范围是负的2的15次方到正的2的15次方减1,即-32768~32767 
    在计算机中,我们知道有符号数都是以补码表示的,所以要将无符号数从原码->反码(除符号位取反)->补码(反码加1)
    65535的原码:1111 1111 1111 1111
    65535的反码:1000 0000 0000 0000
    65535的补码:1000 0000 0000 0001
    则unsigned int类型的 65535 转化为int型为 -1(首位为符号位)

    同样地,short int型转化为unsigned short int型,也是原码->反码(除符号位取反)->补码(反码加1)
    例如:
    -2的原码:1000 0000 0000 0010
    -2的反码:1111 1111 1111 1101
    -2的补码:1111 1111 1111 1110
    int型的 -2 转化为 unsigned int型为 65534(首位不为符号位,没有符号位了)

    特殊情况:如果符号位不为1,那么不论是无符号转为有符号,还是有符号转为无符号,那么转换结果就是要转换数的本身

    2、unsigned int与int相加问题
    int main()
    {
    int i = -20;
    unsigned int j=10;

    if (i + j > 0){
    cout << "为正" << endl;
    }
    else{
    cout << "为负" << endl;
    }
    system("pause");
    return 0;
    }
    输出结果:"为正"
    当两个不兼容的类型进行操作时,哪个能表示更大的数就转为哪个类型,例如,short+int,就要转为int,unsigned int+int就要转为unsigned int。
    所以int + unsigned int时,先将int型转化为unsigned int型,-20就成了unsigned int型的一个很大的正数,再加上一个unsigned int型正数,结果肯定也是正数。
    展开全文
  • unsigned shortint 赋值问题

    万次阅读 2018-06-28 23:30:50
    void main(){unsigned short a;int b=-1;void main(){unsigned short a;...}有事先走了,明天再写输出出果为:65535解答一下为什么会输出65535呢先看一下他的取值范围,short 在一般计算机中占 2 个字节 也就是 16 位...

    void main()
    {
    unsigned short a;
    int b=-1;void main()
    {
    unsigned short a;
    int b=-1;
    a=b;
    cout<<a<<endl;
    system("pause");
    }


    有事先走了,明天再写


    输出出果为:65535


    解答一下为什么会输出65535呢


    先看一下他的取值范围,


    short 在一般计算机中占 2 个字节 也就是 16 位 1byte=8bit


    我们一般时候会这么用 short a;


    计算机默认为有符号 所以取值范围是 -2^8 ~~~ 2^8-1 ^是幂的意思


    所以也就是 -32768 ~~~ 32767


    但是我们上边定义为 unsigned 为无符号 所以取值范围是 0~~~2^16-1 也就是 0~~~~65535


    int b=-1;
    a=b;


    我们看下这两行代码


    你了解了short的取值当然 int 你也了解了 int b=-1; 没有问题 因为int是有符号的 装个-1没啥问题


    a=b 看这行 我们把值赋给 a 了 看了上面的取值 unsigned short 装不下


    这样程序会以循环的方式查找 看到这也许你有些晕,不必急


    如果我们把 b的值改成 0   a 的值也会是0 不用质疑吧 !


    但是你现在写成 -1 ,a 无法存下 -1 ,所以程序 会自动向反方向查找 !


    这个东西上学的时候我也不理解,现在才明白过来。微软是如何定义和执行的我们不需要考虑


    我们只要让住他的规律性


    记法:


    - ____________________ +


    我们就把它当成 x 轴


    unsigned short a;
    int b=-1;
    a=b;


    值为 65535


    unsigned short a;
    int b=65536;
    a=b;


    值 0


    仔细看下区别 :无非存不下就是从头来呗 遇到 负的就向左找 遇到 正数就向右找 找到对应位数就完了


    提示:理解去记忆,懂得原理就可以了
    a=b;
    cout<<a<<endl;
    system("pause");
    }

    有事先走了,明天再写

    输出出果为:65535

    解答一下为什么会输出65535呢

    先看一下他的取值范围,

    short 在一般计算机中占 2 个字节 也就是 16 位 1byte=8bit

    我们一般时候会这么用 short a;

    计算机默认为有符号 所以取值范围是 -2^8 ~~~ 2^8-1 ^是幂的意思

    所以也就是 -32768 ~~~ 32767

    但是我们上边定义为 unsigned 为无符号 所以取值范围是 0~~~2^16-1 也就是 0~~~~65535

    int b=-1;
    a=b;

    我们看下这两行代码

    你了解了short的取值当然 int 你也了解了 int b=-1; 没有问题 因为int是有符号的 装个-1没啥问题

    a=b 看这行 我们把值赋给 a 了 看了上面的取值 unsigned short 装不下

    这样程序会以循环的方式查找 看到这也许你有些晕,不必急

    如果我们把 b的值改成 0   a 的值也会是0 不用质疑吧 !

    但是你现在写成 -1 ,a 无法存下 -1 ,所以程序 会自动向反方向查找 !

    这个东西上学的时候我也不理解,现在才明白过来。微软是如何定义和执行的我们不需要考虑

    我们只要让住他的规律性

    记法:

    - ____________________ +

    我们就把它当成 x 轴

    unsigned short a;
    int b=-1;
    a=b;

    值为 65535

    unsigned short a;
    int b=65536;
    a=b;

    值 0

    仔细看下区别 :无非存不下就是从头来呗 遇到 负的就向左找 遇到 正数就向右找 找到对应位数就完了

    提示:理解去记忆,懂得原理就可以了

    展开全文
  • 类型标识符 32位机器所占字节长度 ...int 4 4 %d short 2 2 %d long 4 8 %ld long long 8 8 %lld unsinged 4 4 %u unsinged short 2 2 %u unsiged long 4 8 %lu unsigned long long 8 8 %llu...
    类型标识符32位机器所占字节长度64位机器所占字节长度格式化输出
    int44%d
    short22%d
    long48%ld
    long long88%lld
    unsinged44%u
    unsinged short22%u
    unsiged long48%lu
    unsigned long long88%llu

    综上所述: 32位机器和64位机器比较,对于long和unsigned long类型,所占用的空间是不一样的,从代码可移植性考虑,
    定义变量最好明确所需长度,选用合适的变量类型。(注:这只是常见而已,并不代表所有的32位机器和64位机器均是这样,所以选用比较明确的类型,更合理高效)

    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
    	int i_a = 1;
    	short s_a = 2;
    	long l_a = 3;
    	long long ll_a = 4;
    	unsigned u_a = 5;
    	unsigned short us_a = 6;
    	unsigned long ul_a = 7;
    	unsigned long long ull_a = 8;
    
    	printf(" i_a = %d, sizeof(i_a) = %u\n", i_a, sizeof(i_a));
    	printf(" s_a = %d, sizeof(s_a) = %u\n", s_a, sizeof(s_a));
    	printf(" l_a = %ld, sizeof(l_a) = %u\n", l_a, sizeof(l_a));
    	printf(" ll_a = %lld, sizeof(ll_a) = %u\n", ll_a, sizeof(ll_a));
    	printf(" u_a = %u, sizeof(u_a) = %u\n", u_a, sizeof(u_a));
    	printf(" us_a = %u, sizeof(us_a) = %u\n", us_a, sizeof(us_a));
    	printf(" ul_a = %lu, sizeof(ul_a) = %u\n", ul_a, sizeof(ul_a));
    	printf(" ull_a = %llu, sizeof(ull_a) = %u\n", ull_a, sizeof(ull_a));
    
    	return 1;
    }
    
    

    X86 VS测试结果:
    在这里插入图片描述

    展开全文
  • int类型取值范围因计算机系统而异。早起的16位IBM PC兼容机使用16位来存储一个int值,其取值范围是-32769 ~32768。目前个人计算机一般是32位,因此用32位存储一个int值。现在随着个人计算机产业的发展,个人计算机...

    一. 普通int类型

    int类型是有符号整型,即int类型的值必须是整数,可以是正整数,负整数,零
    int类型取值范围因计算机系统而异。早起的16位IBM PC兼容机使用16位来存储一个int值,其取值范围是-32769 ~32768。目前个人计算机一般是32位,因此用32位存储一个int值。现在随着个人计算机产业的发展,个人计算机逐步迈向64位处理器发展,自然可以储存更大的整数。ISO C规定int的取值范围最小为-32769 ~32768。

    1.1打印int值

    我们知道可以使用printf()函数打印int类型的值,%d指明了在一行中打印整数的位置。
    %d称为转换说明。

    例1⃣️:

    # include <stdio.h>
    int main(void)
    {
        int i = 10;
        int j = 3;
        printf("%d %d\n", i, j);
        return 0;
    }
    

    Output:

    10 3
    

    第一个输出控制符%d 对应的是第一个输出参数i,第二个输出控制符%d对应的是第二个输出参数j


    例2⃣️:

    # include <stdio.h>
    int main(void)
    {
        int i = 10;
        printf("%d\n", i);  
        return 0;
    }
    

    这句话的意思是将变量 i 以十进制输出

    那么现在有一个问题:i 本身就是十进制,为什么还要将 i 以十进制输出呢

    因为程序中虽然写的是 i=10,但是在内存中并不是将 10 这个十进制数存放进去,而是将 10 的二进制代码存放进去了。计算机只能执行二进制 0、1 代码,而 0、1 代码本身并没有什么实际的含义,它可以表示任何类型的数据。所以输出的时候要强调是以哪种进制形式输出。所以就必须要有“输出控制符”,以告诉操作系统应该怎样解读二进制数据。


    例3⃣️:显示八进制和十六进制

    #include <stdio.h>
    
    int main(void)
    {
        int x =100;
        
        printf("dec = %d, octal = %o, hex = %x\n",x,x,x);
        printf("dec = %d, octal = %#o, hex = %#x\n",x,x,x);
    
        return 0;
       
    }
    

    Output:

    dec = 100, octal = 144, hex = 64
    dec = 100, octal = 0144, hex = 0x64
    

    以十进制显示数字,使用%d;以八进制显示数字,使用%o;以十六进制显示数字,使用%x。要显示各进制数的前缀0,0x,0X,必须分别使用%#o,%#x,%#X。

    二. 其他整数类型

    C语言还提供了3个关键字修饰基本整数类型:short,long,unsigned。

    名称全称类型说明符缩写类型说明符位数范围
    整型intint16位-32768至+32767
    无符号整型unsigned intunsigned16位0 至 65,535
    短整型short intshort16位-32768至+32767
    无符号短整型unsigned short intunsigned short16位0 至 65,535
    长整型long intlong32位-2,147,483,648 至 2,147,483,647
    • short int类型(简写为short):占用空间可能比int少,常用于较小数值以节省空间。
    • long int类型(简写为long):占用空间可能比int多,常用于较大数值。
    • long long int类型(简写为long long):占用空间可能比long多,常用于更大数值的场合。
    • unsigned int(简写为unsigned):只用于非负值的场合。
    • 在C90标准中,添加了unsigned long int(简写为unsigned long)和unsigned short int(简写为unsigned short)
    • 在C99标准中,又添加了unsigned long long int(简写为unsigned long long)

    2.1使用多种整数类型原因

    为什么说short类型“可能”比int类型占用空间少,long类型“可能”比int类型占用空间多?因为C语言只规定了short占用空间不能多于int,long占用空间不能少于int。这样规定是为了适应不同的机器。例如,过去的一台运行Windows3.x的机器上,int类型和short类型都占16位,long类型占32位。后来,Windows和Mac OS都用上了16位存储short类型,32位存储int类型和long类型。现在计算机普遍使用64位处理器,为了储存64位整数,才引入了long long int类型。(使用位数越多可以表示的整数数值越大)。
    现在个人计算机上最常见的设置是,long long占64位,long占32位,short占16位,int占16位或32位。

    2.2如何选择数据类型

    int类型那么多,应该如何选择呢?

    1. 首先,考虑unsigned类型。这种类型常用于计数,因为计数不用负数,而且,unsigned可以表示更大的正数。
    2. 如果一个数超出了int类型的取值范围,且在long类型的取值范围内时,使用long类型。但是,对于那些long类型占用空间比int大的系统,使用long会减慢运算速度。因此,尽量不用long。
    3. 如果在long类型和int类型占用空间相同的机器上编写代码,当确实需要32位的整数时,应使用long而不是int,以便把程序移植到16位机器后仍然能正常工作。
    4. 如果确实需要64位的整数时,使用long long

    2.3如何打印

    • 打印unsigned int类型的值,使用%u
    • 打印unsigned long类型的值,使用%lu
    • 打印long long类型的值,使用%lld和%llu分别表示有符号与无符号类型
    • 打印long类型,使用%ld(如果系统中int和long大小相同使用%d就可以)
    • %lx表示以十六进制(hexadecimal )格式打印long类型
    • %lo表示比八进制(octal)格式打印long类型
    • %hd表示以十进制(decimal)格式打印short类型
    • %ho表示以八进制(octal)格式打印short类型
    • %hu代表以 unsigned short格式输出整数
    • %hx 代表以16进制的 输出short类型的整数

    scanf() 格式控制符汇总
    在这里插入图片描述

    《C primer plus》

    展开全文
  • int在win32内存中占四个字节,以%d输出时有符号数则要去除一个符号位,可以表示的数据范围是-2^31~(2^31)-1. 在16位中,用高位置1来表示负数,int型占两个字节共16位,32768的二进制是10000000,00000000,高位为1...
  • char a=254; unsigned short b=a; unsigned int c=b; cout 问: 在32位机上,下面程序的输出结果。
  • char -128 ~ +127 (1 Byte) short -32767 ~ + 32768 (2 ...unsigned short 0 ~ 65535 (2 Bytes) int -2147483648 ~ +2147483647 (4 Bytes) unsigned int 0 ~ 4294967295 (4 Bytes) long == int long long -92233...
  • 也可以写成 short,占用的存储空间比int型少,常用于较小数值的场合来节省空间。与int型类似,short也是无符号整形。 long int 简写成 long ,占用的空间比int多,适用于大数值的场合,也是有符号类型 long long
  • 编译器不同,宽度是不相同,...short int : 2个字节 int: 2个字节 unsigned int : 2个字节 float: 4个字节 double: 8个字节 long: 4个字节 long long: 8个字节 unsigned long: 4个字//—32位编译器—//(看这
  • int8取值范围是-128 - 127 unsigned int8 0-255 Int16 意思是16位整数(16bit integer),相当于short 占2个字节 -32768 ~ 32767 Int32 意思是32位整数(32bit integer), 相当于 int 占4个字节 -2147483648 ~ ...
  • int, short, long, long long类型的范围

    千次阅读 2018-10-29 10:40:02
    关于带符号与无符号类型:整型 intshort 和 long 都默认为带符号型。要获得无符号型则必须制定该类型为unsigned,比如unsigned long。unsigned int类型可以简写为unsigned,也就是说,unsigned后不加其他类型说明...
  • 以8bit为例,有符号的数占用了一个符号位,只有7位数值,正数范围在2^7-1,负数范围在2^8,因为负数根据补码表示的,补码就是-1=127-128,补码是127,-0=128-128,补码是128,一共可以表示的补码是0-128,所以负数的...
  • C语音 unsigned char, int的取值范围

    千次阅读 2019-08-19 16:00:49
    /* exact-width signed integer types */ typedef signed charint8_t; // 范围-128~127 (1 Byte) typedef signed short int int16_t; // 范围 -32768 ~...
  • 深入解析unsigned intint

    万次阅读 多人点赞 2017-10-15 21:49:21
    以下是对unsigned intint进行了详细的分析介绍,需要的朋友可以过来参考下 就如同int a;一样,int 也能被其它的修饰符修饰。除void类型外,基本数据类型之前都可以加各种类型修饰符,类型修饰符有如下四种: 1...
  • 首先由于数据的长度和平台相关,所以基于 64 位系统... unsigned int 32 bits/4294967295 32 bits unsigned long 32 bits 64 bits/18446744073709551615 unsigned long long 64 bits 64 bi...
  • intunsigned等转换(转)

    万次阅读 2018-09-11 15:05:09
    一般用所能表示的数据范围来比较类型的大小,如char型<unsigned char型<short型…在表达式中,一般都是由小的类型向大的类型转换(强制类型转换除外)   下面结合自己查的资料,加上自己不断地举各种情况编程...
  • unsigned int数据相减

    千次阅读 2017-04-21 14:52:06
    unsigned int a = 3; unsigned int b = 4294967294; // unsigned int 最大值为4294967295 int c = a - b; printf("c = %u\n", c); // 输出为5, 不像unsigned short 有类型提升
  • intunsigned等转换深入理解(二)

    万次阅读 2016-10-25 14:50:55
    一般用所能表示的数据范围来比较类型的大小,如char型<unsigned char型<short型...在表达式中,一般都是由小的类型向大的类型转换(强制类型转换除外)   下面结合自己查的资料,加上自己不断地举各种...
  • short 范围:-32768 ~ 32767unsigned int 范围: 0~4294967295 int 范围: -2147483648~2147483647 unsigned long 范围: 0~4294967295 long 范围: -2147483648~2147483647long long的最大值:92233
  • 解析:数值型数据间的混合运算规则为: ①整型数据中字符型(char)和短整型(short)转换成基本整型(int),基本整型(int)转换成长整型(long),有符号(signed)转换成无符号(unsigned); ②浮点型数据中单...
  • C/C++ 数据范围int

    千次阅读 2018-08-17 11:26:39
    速查表: char -128 ~ +127 (1 Byte) short -32767 ~ + 32768 (2 Bytes) unsigned short 0 ~ 65536 (2 Bytes) int -2147483648 ~ +2147483647 (4 Bytes) u...
  • 要打印类型取值范围时,需要调用limits.h头文件 打印: 引用 比特位个数: 大写类型_BIT 最大值: 大写类型_MAX 最小值 : 大写类型_MIN 若打印无符号最大值 U大写类型_MAX #include #include <limits.h>int ...
  • static unsigned shortint ,char

    千次阅读 2019-11-21 22:06:32
    static unsigned shortint ,char表示静态变量,在面试时会经常考到,静态变量只会存在一个内存空间,不管什么时候对其改变都会影响下一次执行的结果。而且其值可以被不断的改变,但如果加了const则不会被改变。...
  • unsigned shortunsigned long

    千次阅读 2019-09-26 15:21:42
       unsigned short [ int ] 的字节数位2,取值范围是 0 ~ 2^16-1,即 0 ~ 65535 在存储单元中的存储方式是用整数的补码(complement) 形式存放。所以要将无符号数从原码->反码(除符号位取反)->补码(反码加...
  • char,short,int,long,unsigned,signed

    千次阅读 2014-02-25 20:45:06
    char, short, int, long, unsigned, signed。 6个关键字可以组合成8种整型类型。 signed char, signed short, signed int, signed long, unsigned char, unsigned short, unsigned int, unsigned long。 各个整型...
  • char, signed char,unsigned char, short int unsigned short int, int 这些数据类型是大家平时工作中一定会用到的,今天不知咋回事,看到这些数据类型时突然产生了一个疑问:数据类型要么是有符号的,要么是无...
  • intunsigned int隐式转换

    万次阅读 2018-06-02 15:05:19
    int main(){ unsigned int a = 6; int b = -20; (a+b)&gt;6?printf("&gt;6\n"):printf("&lt;6\n"); return 0;} 结果是 &gt;6为什么呢?这里涉及到了隐式转换的问题》》》》》C...
  • int和long类型取值范围int和long类型取值范围。 1. int类型 ---------4字节(32位) ​ --------------------------------------------------------...①(无符号整型) ------------------------- unsigned int ...
  • shortUnsigned short以及Java基本类型

    千次阅读 2019-06-15 09:53:05
    unsigned short没有符号位,所以实质数值位数是16位。取值范围:0~65536。 Java中的基本类型都是有符号类型,也就是数值类型都有正负号。所占位数,不随硬件变化。其基本数据类型大小如下: char 2个字节,16位; ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 142,204
精华内容 56,881
关键字:

int数据范围shortunsigned