精华内容
下载资源
问答
  • c语言整型
    2022-09-02 09:04:00
      int x;
      scanf("%d", &x);
    //主要部分
      char str[100];
      sprintf(str, "%d", x);

    更多相关内容
  • C语言整型知识

    千次阅读 2022-03-24 16:19:20
    C语言整型int是英文integer的缩写,int分为有符号(signed)和无符号(unsigned)整型。 C语言整型有如下: 一、有符号 1、signed char 可简化为 char 2、signed short int 可简化为short 3、signed int 可简化为 ...

    初入C语言,有理解错误或不正确请多指教、纠正!

    C语言整型int是英文integer的缩写,int分为有符号(signed)和无符号(unsigned)整型。

    C语言整型有如下:

    一、有符号

    • 1、signed char 可简化为 char
    • 2、signed short int 可简化为 short
    • 3、signed int 可简化为 int
    • 4、signed long int 可简化为 long
    • 5、signed long long int 可简化为 long long

    二、无符号

    1. unsigned char
    2. unsigned short int 可简化为 unsigned short
    3. unsigned int
    4. unsigned long int 可简化为 unsigned long
    5. unsigned long long int 可简化为 unsigned long long

    虽然完整写法比较麻烦,不过意义明确。

    三、注意点

    1. 上面类型越往下的类型取值范围越大,不能把大的数值往小的类型装,会导致数据不正确
    2. 类型所占用的字节数不同的编译器、平台会有差别。如int在16位系统占用2个字节,在32、64位一般占用4个字节。另外long在windows只占用4个字节,在类Unix中long占用8个字节
    3. 一个字节(Byte)有8个二进制位(Bit),即 1Byte=8Bit
    4. 有符号整型二进制的最高位为符号位,0表示正数,1表示负数。因此有符号一个字节只有7个二进制位是数据位(取值范围计算方法:-2^7~2^7-1,为什么是7次方而不是8次方?因为二进制最高位是符号位。为什么正数要减1呢?因为正数范围多了一个0)
    5. 无符号整型所有二进制位全部是数据位(取值范围计算方法:0~2^8-1,为什么正数要减1呢?因为正数范围多了一个0)
    6. 类型具体占用多少字节可用sizeof关键进行查询
    7. 可引入limits.h头文件,打印输出各类型最小取值、最大取值范围(具体看代码段)

    四、各类型取值范围(以windows10系统64位为例) 

    •         signed char      -> -2^7-1  至 2^7-1   即 -128 至 127
    •         signed short     -> -2^15-1 至 2^15-1  即 -32768 至 32767
    •         signed int       -> -2^31-1 至 2^31-1  即 2,147,483,648 至 2,147,483,647
    •         signed long      -> -2^31-1 至 2^31-1  即 2,147,483,648 至 2,147,483,647
    •         signed long long -> -2^63-1 至 2^63-1  即 9,223,372,036,854,775,808 至 9,223,372,036,854,775,807
    •         unsigned char      -> 0  至 2^8-1   即 0 至 255
    •         unsigned short     -> 0  至 2^16-1  即 0 至 65535
    •         unsigned int       -> 0  至 2^32-1  即 0 至 4,294,967,295
    •         unsigned long      -> 0  至 2^32-1  即 0 至 4,294,967,295
    •         unsigned long long -> 0  至 2^64-1  即 0 至 18,446,744,073,709,551,615 

    #include <stdio.h>
    #include <limits.h> //各类型的最大取值范围和最小取值范围定义头文件
    /*
        1、整型可分为char、short、int、long、long long,越往后取值范围越大
        2、还可以上面的关键字前面加另外两个修饰符指定是有符号还是无符号整型:unsigned(无符号)、signed(有符号、默认不加就是有符号),规范写法建议写上
        3、每个编译器和平台,整型所占用的字节可能不一样。早期16位系统int只占2个字节。现在32位编译器int占用4个字节
        4、一个字节(Byte)等于8位(bit)二进制
        5、用sizeof关键字可测量类型、变量、常量等所占用的字节
        6、有符号signed在二进制的最高位作为符号位,0表示正数,1表示负数
        7、各类型取值范围计算方法为:有符号-2^(n-1)到2^(n-1)-1,无符号0到2^n-1。其中n代表占用字节数乘以8。
            a、为什么有符号n要减1呢?因为二进制最高位是符号位
            b、为什么正数要减1呢?因为正数范围多了一个0
    */
    int main(){
        
        printf("---------signed integer-----------\n");
        printf("signed char size = %d Byte\n", sizeof(signed char)); //char 等同于signed char写法,后面这种更加明确规范。下面同理
        //printf("signed short size = %d Byte\n", sizeof(signed short)); // %d其中d是英文decimal的缩写,中文是十进制的意思
        printf("signed short int size = %d Byte\n", sizeof(signed short int));
        printf("signed int size = %d Byte\n", sizeof(signed int));
        //printf("signed long size = %d Byte\n", sizeof(signed long));
        printf("signed long int size = %d Byte\n", sizeof(signed long int));
        //printf("signed long long size = %d Byte\n", sizeof(signed long long)); 
        printf("signed long long int size = %d Byte\n", sizeof(signed long long int)); 
        //有符号各类型取值范围
        /*
            signed char      -> -2^7-1  至 2^7-1   即 -128 至 127
            signed short     -> -2^15-1 至 2^15-1  即 -32768 至 32767
            signed int       -> -2^31-1 至 2^31-1  即 2,147,483,648 至 2,147,483,647
            signed long      -> -2^31-1 至 2^31-1  即 2,147,483,648 至 2,147,483,647
            signed long long -> -2^63-1 至 2^63-1  即 9,223,372,036,854,775,808 至 9,223,372,036,854,775,807
        */
       //验证输出各类型最小取值范围和最大取值范围
       printf("------\n");
       printf("signed char min: %d max: %d\n", CHAR_MIN, CHAR_MAX);
       printf("signed short int min: %d max: %hd\n", SHRT_MIN, SHRT_MAX);
       //printf("signed short min: %d max: %hd\n", SHRT_MIN, SHRT_MAX);
       printf("signed int min: %d max: %d\n", INT_MIN, INT_MAX);
       printf("signed long int min: %ld max: %ld\n", LONG_MIN, LONG_MAX);
       //printf("signed long min: %ld max: %ld\n", LONG_MIN, LONG_MAX);
       printf("signed long long int min: %lld max: %lld\n", LONG_LONG_MIN, LONG_LONG_MAX);
       //printf("signed long long min: %lld max: %lld\n", LONG_LONG_MIN, LONG_LONG_MAX);
    
        printf("---------unsigned integer-----------\n");
        printf("unsigned char size = %d Byte\n", sizeof(unsigned char));
        //printf("unsigned short size = %d Byte\n", sizeof(unsigned short));
        printf("unsigned short int size = %d Byte\n", sizeof(unsigned short int));
        printf("unsigned int size = %d Byte\n", sizeof(unsigned int));
        //printf("unsigned long size = %d Byte\n", sizeof(unsigned long));
        printf("unsigned long int size = %d Byte\n", sizeof(unsigned long int));
        //printf("unsigned long long size = %d Byte\n", sizeof(unsigned long long));
        printf("unsigned long long int size = %d Byte\n", sizeof(unsigned long long int));
        //无符号各类型取值范围
        /*
            unsigned char      -> 0  至 2^8-1   即 0 至 255
            unsigned short     -> 0  至 2^16-1  即 0 至 65535
            unsigned int       -> 0  至 2^32-1  即 0 至 4,294,967,295
            unsigned long      -> 0  至 2^32-1  即 0 至 4,294,967,295
            unsigned long long -> 0  至 2^64-1  即 0 至 18,446,744,073,709,551,615
        */
       //验证输出无符号各类型最小取值和最大取值范围
       printf("------\n");
       printf("unsigned char min: %d max: %u\n", 0, UCHAR_MAX);
       printf("unsigned short int min: %d max: %u\n", 0, USHRT_MAX);
       //printf("unsigned short min: %d max: %u\n", 0, USHRT_MAX);
       printf("unsigned int min: %d max: %lu\n", 0, UINT_MAX);
       printf("unsigned long int min: %d max: %lu\n", 0, ULLONG_MAX);
       //printf("unsigned long min: %d max: %lu\n", 0, ULLONG_MAX);
       printf("unsigned long long int min: %d max: %llu\n", 0 ,ULONG_LONG_MAX);
       //printf("unsigned long long min: %d max: %llu\n", 0 ,ULONG_LONG_MAX);
       
        return 0; //返回给操作系统内核,返回0说明程序正常退出
    }

    展开全文
  • C语言整型提升

    千次阅读 2022-05-01 21:20:47
    什么是正整型提升2.整型提升的规则3.例题4.整型提升的意义 1.什么是正整型提升 官方的解释是: 整型提升是C程序设计语言中的一项规定:在表达式计算时,各种整型首先要提升为int类型,如果int类型不足以表示则要提升...

    1.什么是整型提升

    官方的解释是:

    整型提升C程序设计语言中的一项规定:在表达式计算时,各种整型首先要提升为int类型,如果int类型不足以表示则要提升为unsigned int类型;然后执行表达式的运算。

    2.整型提升的规则

    整型提升分为有符号和无符号两种

    • 有符号的:整型提升时是按照变量的补码被截断时的最高位是什么进行补位的,如果截断后最高位(即最左面)的一位数为 1 则在最高位前补 1 ,如果最高位是 0 则在前面补 0 ,补够32位即int类型即可。
    • 无符号的: 直接在被截断的前面补 0 即可。

    3.例题

    直接看代码:

    int main()
    {
    	char a = -1;
    	signed char b = -1;
    	unsigned char c = -1;
    	printf("a=%d\nb=%d\nc=%d\n", a, b, c);
    	return 0;
    }
    

    上面代码运行结果如图:(编译器计算过程中发生了整型提升与截断)
    在这里插入图片描述
    分析如图:
    在这里插入图片描述

    我们可以分成几步来看:

    1. 数字-1的补码为:11111111111111111111111111111111 , 将数字-1交给a时,因为a,b,c的类型为char类型即只有一个字节,所以a,b,c中只能储存一个字节(即8个比特位),所以需要进行截断只保留最后的8个比特位,所以此时a中储存的比特位为:11111111 (上图中有转换过程)。此时得到的是补码(因为整型数字在计算机中都是以补码形式存储)
    2. 以%d打印需要进行整型提升。a,b都是有符号数最高位为1,则在前面(最左边)补1得到:11111111111111111111111111111111. c为无符号数在前面(最左边)补0得到:00000000000000000000000011111111.
    3. 再转换成原码打印 。a,b原码:10000000000000000000000000000001(补码减一取反得到原码). c原码为:00000000000000000000000011111111(整数无符号数原码=反码=补码)。最终得到a=-1,b=-1,c=255

    再看一个例子:

    int main()
    {
    	char a = 3;
    	char b = 127;
    	char c = a + b;
    	printf("%d\n", c);
    	return 0;
    }
    

    不细心的老铁一看c=130,但运行后结果是-126.为什呢?
    在这里插入图片描述
    结合下图分析:
    在这里插入图片描述

    1. 数字3的补码为:00000000000000000000000000000011 , 将数字3交给a时,因为a的类型为char类型即只有一个字节,所以a中只能储存一个字节即8个比特位,所以需要进行截断只保留最后的8个比特位,所以此时a中储存的比特位为:00000011

      数字127的补码为:00000000000000000000000001111111 同理也因为为char类型发生截断,截断后b中储存的比特位为: 01111111

    2. 执行 a+b 时先对8比特位的a,b进行整型提升,因为都为char 类型所以为有符号位,提升时补最高位的数字0,补够32位。提升后两者的补码为:

      00000000000000000000000000000011
      00000000000000000000000001111111

      将a,b相加得到补码:

      00000000000000000000000010000010

    3. 又 c 为char类型,只能存放8个比特位,所以需要截断,截断后c 中储存的比特位为:10000010

    4. 再以%d形式打印,需要32位比特位,要对 c 进行整型提升了。因为c 的最高位是 1 在最高位前面补 1 即可,补够32位,提升后补码为:11111111111111111111111110000010

    5. 将补码转化为原码的形式打印出来,转化后的原码为 : 10000000 0 00000000000000001111110为负数,原码对应的整数就为 -126

    4.整型提升的意义

    整型提升的意义在于:表达式的整型运算要在CPU的相应运算器件内执行,CPU内整型运算器(ALU)的操作数的字节长度一般就是int的字节长度,同时也是CPU的通用寄存器的长度。因此,即使两个char类型的相加,在CPU执行时实际上也要先转换为CPU内整型操作数的标准长度。通用CPU是难以直接实现两个8比特字节直接相加运算(虽然机器指令中可能有这种字节相加指令)。所以,表达式中各种长度可能小于int长度的整型值,都必须先转换为int或unsigned int,然后才能送入CPU去执行运算。

    展开全文
  • c语言整型数据

    2022-04-05 20:12:37
    1)整型 一、整型变量的定义和输出 打印格式 含义 %u 输出一个10进制的无符号数 %d 输出一个有符号的十进制 int类型 %o(%o) 输出8进制的int 类型 %x 输出16进制的int 类型,字母以小写输出...

    1)整型

    一、整型变量的定义和输出

    打印格式含义
    %u输出一个10进制的无符号数
    %d输出一个有符号的十进制 int类型
    %o(%o)输出8进制的int 类型
    %x输出16进制的int 类型,字母以小写输出
    %X输出16进制的int类型,字母以大写输出
    #include <stdio.h>
    int main01(void){
            // 定义变量
            //数据类型 变量名(标识符)
            int a=0;
            // scanf函数 通过键盘获取数据放在变量中
            scanf("%d"&a);
    // 打印
    printf("十进制:%d\n",a);
    printf("八进制:%o\n",a);
    printf("十六进制:%x\n",a);
    printf("十六进制:%X\n",a);
    }
    int main02(void){
     //无符号整型数据
            unsigned int a=10;
            //有符号整型数据 可以省略signed
            //signed int b=20;  
            //%u是一个占位符,输出一个无符号整型数据      
    
            printf("%u\n",a);
    
    }   
    int main03(void){
            //短整型
            short a=10;
            // 长整型
            long b=20;
            //长 长整型
            long long c=30;
            printf("%hd\n",a);
            printf("%ld\n",b);
            printf("%lld\n",c);
    }    
    

    二、short, int ,long ,long long

    数据类型占用空间
    short(短整型)2字节
    int(整型)4字节
    long(长整型)windows为4字节 Linux 4字节(32位)8字节(64位)
    long long(长 长整型)8字节

    Attention

    short<=int<=long

    1>整型数据在内存中占的字节数与选的操作系统有关,虽然C语言标准中没有明确规定整型数据的长度,但long型数据长度不能短于int类型, short 类型整数的长度不能长于int类型

    2>一个小的数据类型赋值给一个大的数据类型,不会出错,因为编译器会自动转化,但一个大的数据类型赋值给一个小的数据类型,那么就可能丢失高位

    展开全文
  • C语言整型浮点型

    2021-07-16 08:42:40
    整型与浮点型 整型: 在计算机中:正数是以原码的方式存储,负数是以补码的方式存储;(负数的补码:原码取反再加一);一般数据在计算机中存储是按照十六进制的方式以小端存储的方式进行存储,eg:假设有一个数的...
  • C语言整型输出

    千次阅读 2020-02-29 13:14:39
    C语言整型输出 %d %.2d %2d %02d的区别 %d就是普通的输出 %2d是将数字按宽度为2,采用右对齐方式输出,若数据位数不到2位,则左边补空格 %02d 和 %2d差不多,只不过左边补0 %.2d 从执行效果来看,和%02d一样 ...
  • C语言整型转字符串

    2020-08-01 21:44:05
    C语言整型转字符串 顺序存储顺序打印 #include <stdio.h> int main() { int num = 110086; char str[6] = {0}; int divnum = 100000; int i = 0; for(i=0; i<6; i++) { str[i] = (num / divnum)+48...
  • C语言整形转字符串

    2013-01-04 16:34:24
    C语言整形转字符串
  • 搞透C语言整型数据范围表示

    千次阅读 2021-05-20 12:53:21
    (1)shortC语言中,short是定义一种整型变量家族的一种长度:依据程序编译器的不同short定义的字节数不同。标准定义short短整型变量不得低于16位,即两个字节。编译器头文件夹里面的limits.h定义了short能表示的大小...
  • C语言整型数据类型

    2020-11-16 23:14:42
    整型分为字符,短整型整型,长整型。同时有无符号和有符号之分。 数据类型划分以及其表示数据范围如下 长整型至少要和整型一样长,而整型至少应该和短整型一样长。 在实际开发过程中,short int 至少是...
  • 浅谈C语言整型与浮点型转换

    千次阅读 2021-05-20 12:00:13
    本篇博客将阐述、讨论的内容:●...●unsigned int(无符号整型)以16位系统为例,unsigned int能存储的数据范围是0~65535(需要注意整数是以补码形式存放)。其进行的是模数计算,也就是所谓的二进制相加减,计算方...
  • C语言整型数据分析

    千次阅读 2021-05-19 10:37:50
    C语言整型数据分析不同类型的量可以参与运算并相互赋值。其中的类型转换是由编译系统自动完成的。以下是小编为大家搜索整理的C语言整型数据分析,希望能给大家带来帮助!更多精彩内容请及时关注我们应届毕业生考试网!...
  • c语言基本整型数据类型,存储方式详解,补码 原码 取反加一 ,整型,短整型,长整型,双长整型,字符型,布尔型。 int long char short bool 。无符号型 unsigned 。 初学者
  • C语言整型提升的规则及样例详解

    千次阅读 多人点赞 2021-03-05 15:17:18
    hello 大家好,相信同学们在学习C语言的时候,有时候会遇到整型提升的情况,今天我们聊一聊什么是整型提升。 什么是整型提升? 整型提升是C程序设计语言中的一项规定:在表达式计算时,各种整形首先要提升为int类型...
  • C语言整型数据(整数)

    千次阅读 2021-01-12 07:03:20
    整型数据的分类 整型数据的一般分类如下: 基本型:类型说明符为int,在内存中占2个字节。短整型:类型说明符为short int或short。所占字节和取值范围均与基本型相同。长整型:类型说明符为long int或long,在内存中...
  • C语言(二)— 整型

    千次阅读 2021-03-06 15:32:58
    C语言中,整型数据一般用short、int、long三种数据类型来声明,int是C语言中常用的声明整形数据的数据类型,在现代的操作系统中,一般是占4字节(Byte)即32位(Bit),4字节可以存储很大的数值,为了节省空间,避免...
  • C语言中的整型

    千次阅读 2021-05-26 02:00:54
    C语言中,使用的整常数有八进制、十六进制和十进制三种。整型常量1.八进制整常数八进制整常数必须以0开头,即以0作为八进制数的前缀。数码取值为0~7。八进制数通常是无符号数。以下各数是合法的八进制数:015(十...
  • c语言——整型提升

    2022-06-22 16:12:22
    整型提升
  • c语言整形

    千次阅读 2019-04-16 21:44:18
    整型数据也分为基本整形(int)、短整型(short int)、长整型(long int)以及新添加的双长整型(long long int),字符型(char)和布尔型(bool)。 其中布尔型前期一般用不到,暂时我也不会。 基本整形:一般...
  • 数值在计算机表示为补码表示,所以在C语言里负数也是以补码存储的 符号位为1表示负数,为0表示正数 负数反码 = 负数原码符号位不变,其他位取反 负数的补码 = 负数反码+1 负数的原码 = 负数的补码的补码 ...
  • C语言代码整型与float相互转换

    千次阅读 2022-03-12 15:37:19
    printf("%f转换结果为整型:\n\t", data3); for (u8 i = 0; i ; i++) { printf("%02X ", werwer.data[3 - i]); } printf("\n"); } printf("是否继续?Y/N\n"); printf("-------------------------------------------...
  • C语言整型的各种类型取值范围

    千次阅读 2020-11-06 14:43:12
    C语言整型各类型占字节数及取值范围: 总结 当某个类型有n个字节的时候,它的取值范围为: 有符号时:-2^(8n-1) 到 2^(8n-1)-1, 为啥值的范围要少一位? 是因为有符号时最高位的0或1代表的是符号位,符号位也需
  • c语言-----整型数据类型详解

    千次阅读 2022-08-15 16:19:59
    常见整型基本数据类型:short,short int,unsigned short,int,long......在不同系统和编译平台中,long的字节数有所变化,但是很多情况下占四个字节。在早期16位系统和某些早期编译平台中int所占字节数是2位,但...
  • C语言中的整型提升

    千次阅读 2022-04-02 14:21:50
    C语言中的整型提升
  • 1. 整型数据类型 C语言里面的整数数据类型 类型名称 C语言中的关键字 注释 字符型 char 表示一个很小的整数 短整型 short 表示一个不怎么大的整数 整型 int 生活中一般的整数都可以表示 长整型 long 较大的整数 加长...
  • C语言整型常量

    千次阅读 2021-05-20 05:30:09
    本节介绍C语言中的整型常量。整型常量就是整型常数。在C语言程序中,整型常量主要有十进制、八进制和十六进制三种形式。(1)十进制整型常量十进制整型常量用到的数字有0~9。例如32767、65535、0等。整型常量开头数字...
  • C语言——整型与字符型的转换

    千次阅读 2021-09-24 20:55:30
    使用C语言整型与字符型两者之间进行转换,此次为个人练习,若有错误敬请提出。 要求:读取一个65到122之间的整型数,然后以字符形式输出它,比如读取了97,输出字符a。 使用if语句限定整型的范围是65-122之间,使...
  • 本篇文章主要解决的问题是C语言整形与浮点型转化过程中的精度损失从而容易产生bug,对于浮点和整形的相关内容大家可以参考下面两篇文章、,这里就不再赘叙了。1整形与浮点转化的精度损失参考小程序:1#include 2#...
  • #include #include void InttoHex(char *buf, int data, int byteNum) //整型转十六进制{int i;for(i=0; i{if(i < (byteNum-1)){buf[i] = data >> (8*(byteNum-i-1));}else{buf[i] = data % 256;}}}void ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 189,620
精华内容 75,848
关键字:

c语言整型

友情链接: DrawGraphy.rar