精华内容
下载资源
问答
  • c语言整形

    千次阅读 2019-04-16 21:44:18
    整型数据也分为基本整形(int)、短整型(short int)、长整型(long int)以及新添加的双长整型(long long int),字符型(char)布尔型(bool)。 其中布尔型前期一般用不到,暂时我也不会。 基本整形:一般...

    整型数据也分为基本整形(int)、短整型(short int)、长整型(long int)以及新添加的双长整型(long long int),字符型(char)和布尔型(bool)。
    其中布尔型前期一般用不到,暂时我也不会。
    基本整形:一般占据2个或者4个字节,他的取值范围(-2147483648——2147483647);
    短整型;2个字节,取值范围(-32768——32767)
    长整型;4个字节,取值范围(-2147483648——2147483647)
    双长整型;8个字节,取值范围(-9223372036854775808——9223372036854775807)
    和其他无符号整型(unsigned),它表示无符号,一般情况下都是默认有符号整形,除非特殊声明。

    整型变量的声明方式:

    int a;
    long int b;
    unsigned int c;

    在一个语句中声明多个属于同一类型的变量:

    int d, e;

    int 类型的变量初始化方式:

    e= 150; //前面已经声明,在此进行初始化

    int a = 60; //直接在一个语句中进行声明和初始化
    想从键盘输入可以用
    #include<stdio.h>
    int main()
    {
    int a,b=0,c,d; //定义和初始化
    c=0; //对c进行初始化
    scanf("%d",&a); //从键盘输入给a赋值
    d=a+b+c; //进行加法运算
    printf("%d’,d); //输出d
    }
    其中双长整型用%ld输出和输入。
    特别注意别超过取值范围,否则会影响其他的变量,从而导致变异错误

    展开全文
  • C语言入门易错点:整形提升截断什么是整型提升整型提升的意义在什么情况下会发生?截断 什么是整型提升     C的整形算术运算总是至少以缺省整形类型的精度来进行的。为了获得这个精度,表达式中的字符整型...

    什么是整型提升

        C的整形算术运算总是至少以缺省整形类型的精度来进行的。为了获得这个精度,表达式中的字符和短整型操作数再使用之前被转转为普通整型,这种转换称为整型提升。

    整型提升的意义

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

    在什么情况下会发生?

        我们在进行逻辑运算的时候,可能一个简单的比较或者输出就会出现这种情况。

    char num = -1;
    printf("%d\n", num);
    printf("%u\n", num);
    

    运行效果为:
    运行效果

    1. 第一次提升:
          我们此处将num以无符号整型的格式进行打印,此时会输出4294967295也就是32位程序之下无符号整型能存储的最大的数。
      为什莫是最大的数呢?

        因为 num的类型为char只占用1个字节,因为要将其以整型的格式打印出来,这时候就出现了第一次整型提升,将原本为char类型的数据转换为了int,将其提升为整型。

    我们看到将其按照整型打印出来的结果为 -1

    1. 第二次提升:

    我们将其再次进行打印,不过以无符号整型的方式进行打印,但此时他输出的是一个无符号整型能存储的最大值。这时候出现了第二次整型提升,将char提升为unsigned int 无符号整型。为什莫输出的是最大值呢?

    计算机在存储数据的时候都是以0 1 代码存储在计算机内,正数和负数都存的是他的补码。正数的反码和补码都等于他的二进制数,负数的补码等于他的反码 + 1。

    这时候再来看,我们是将 -1 以无符号整型的形式打印,其对应的补码为 11111111 11111111 11111111 11111111,当提升以后会将其看为无符号,于是就将其输出,也就是我们看到的最大值

    截断

    我们先来看看这段代码

    	char i=129;
    	printf("%d\n",i);
    

    我们不妨猜一猜,输出的结果会是多少?经过上面的讲解,在这里,会出现整型提升,很明显。但是输出的结果却和我们预料的大相径庭。
    截断的结果
    为什么会出现这种结果,通过整型提升不是应该输出一个129吗?这里我们再来了解一下,截断。
    出现整型提升时,只会将该类型的数据读取方式改变,但是并不会改变他的存储大小。char只有一个字节,将一个4字节的整数强行赋值给他,此时,他就会将溢出的位自动舍弃,只会保留他能存储的最大位,也就是8个比特位,也就是说,经过提升和截断以后,他的二进制数为1111 1111将其按照整型打印时,其只能读出8个比特位,而且8个位都是1,第一位作为符号位,即只有后7位存储数据,固打印出来的数为: -127

    展开全文
  • C的整型算术运算总是至少以缺省整型类型的精度来确定,为了获得这个精度,表达式中的字符整型操作数在使用之前被转换为普通整形,这种转换称为整型提升。 1.2 为什么要进行整型提升 表达式的整型运算要在CPU的...

    1.整型提升

    1.1 定义

    C的整型算术运算总是至少以缺省整型类型的精度来确定,为了获得这个精度,表达式中的字符和短整型操作数在使用之前被转换为普通整形,这种转换称为整型提升。

    1.2 为什么要进行整型提升

    表达式的整型运算要在CPU的相应运算器内部器件执行,CPU内整型运算器的操作数的字节长度一般就是int的字节长度,这也是CPU的通用寄存长度。
    所以,表达式中各种可能长度小于int整型长度的,都必须先转化为int或unsigned int,然后才能送入CPU去执行。
    比如以下的代码:i为char类型,要先进行整型提升,然后再进行截断,在存储起来。
    在这里插入图片描述
    在这里插入图片描述

    1.3 如何进行整型提升

    以上面的为例:
    129的二进制表示为:00000000 00000000 00000000 10000001
    但是char类型只有8个bit位,此时就会发生整型截断,就会取低位的8bit:10000001
    但是一个整型有32位bit,那么如何从8bit整型提升到32bit.
    在这里插入图片描述
    如上图,我们可以发现,再有符号位时,10000001首位为1,那么在前面补够24位1,又因为计算机中存储是以补码的形式存的,转化一下就是-127.
    当是无符号位时,无论首位是几,前面都补24位0,那么就是129.
    总结一下,如何进行整型提升?

    1.负数的整型提升 char a=-1
    变量a的二进制位只有8位11111111,char是有符号的,所以整型提升高位补充符号位,
    提升后为11111111111111111111111111111111。
    2.正数提升 char b=1;
    变量b二进制位位00000001,因为有符号且首位是0,所以在前面补够24个0,
    提升后为:00000000000000000000000000000001。
    3.无符号整数提升 无符号位无论是正数还是负数前面都补0.

    2.整型截断

    在C语言中,当数据类型占字节数多的给占字节数少的变量赋值时,会发生截断。
    分两种情况

    无符号数截断时,截断后数仍为无符号

    有符号数截断时,自动把截断后的数转换为无符号

    展开全文
  • C语言中的整型

    2017-01-19 13:45:21
    1、长整形(long int)不一定比整型长; 2、整型不一定比短整型(short int); 3、short int至少应为16位(2字节); 4、long int至少应为32位。 下面总结了不同位数机器上的各种类型的字节长度: 16位编译器

    我们都知道,C语言中,int的字节长度和编译器有关系,所以,long int,short int的宽度都可能随编译器而异。但有几条铁定的原则:
    1、长整形(long int)不一定比整型长;
    2、整型不一定比短整型(short int)长;
    3、short int至少应为16位(2字节);
    4、long int至少应为32位。

    下面总结了不同位数机器上的各种类型的字节长度:
    16位编译器
    char :1个字节(-128~127)
    char*(即指针变量): 2个字节
    short (int) : 2个字节
    int: 2个字节
    unsigned int : 2个字节
    float: 4个字节
    double: 8个字节
    long(int): 4个字节
    long long: 8个字节
    unsigned long: 4个字节

    32位编译器
    char :1个字节
    char*(即指针变量): 4个字节(32位的寻址空间是2^32, 即32个bit,也就是4个字节。同理64位编译器)
    short int : 2个字节
    int: 4个字节
    unsigned int : 4个字节
    float: 4个字节
    double: 8个字节
    long: 4个字节
    long long: 8个字节
    unsigned long: 4个字节

    64位编译器
    char :1个字节
    char*(即指针变量): 8个字节
    short int : 2个字节
    int: 4个字节
    unsigned int : 4个字节
    float: 4个字节
    double: 8个字节
    long: 8个字节
    long long: 8个字节
    unsigned long: 8个字节

    还有两个类型修饰符signed(有符号)和unsigned(无符号),就拿int来说,32位编译器下,int(如果不加变量修饰符的话默认就是signed int)的范围就是 -32768 ~ 32767;unsigned int 的范围就是 0~65535。

    在这里我提下这个类型–size_t,在阅读redis源码的时候遇到过,
    size_t是在头文件stddef.h中定义的,size_t的位数有具体架构而定,32位架构可以定义为 typedef unsigned int size_t(4个字节),64位架构中可以定义为 typedef unsigned long size_t (8个字节),要注意的是无符号的。

    今天就先写到这,以后有别的再补充~ C语言真奇妙

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

    2019-11-14 22:20:24
    为了获得这个精度,表达式中的字符整型操作数再使用之前被转转为普通整型,这种转换称为整型提升。 整型提升的意义: 表达式的整型运算要在CPU的相应运算器件内执行,CPU内整型运算器(ALU)的操作数的字节长度...
  • C语言中,可以把 字符型、短整形整形、长整形都看作是整形,同属于整形家族这个大类型。... 短整、整形长整型之间的关系则是: 长整形至少和整形一样长,整形至少整形一样长。 sizeof(long...
  • c语言常见基本数据类型长度

    千次阅读 2018-12-24 01:16:50
    #c语言基本数据类型有浮点型整型 ##整型: 64位系统下各类型的 字节长度 基本整形 int 4 短整型 short int 2 长整型 long int 4 双长整型 long long (int) 8(c99增加的) 字符型 char 1 布尔型 bool 1...
  • C语言整型算术运算中,计算的最小单位为32位,即一个int字节的长度。即在计算过程中,表达式中的短整型和字符型要先被扩展为一个int型长度,再进行计算。 例如: short int a, b, c; .... a = b + c; 该式在...
  • C语言基本数据类型有整形数据、浮点型数据字符数据(在32位系统下一字节为八个bity位) 一、整形数据 short【int】 短整型 2个字节 Signed short 【int】 带符号短整型 2个字节 Unsigned short ...
  • 一起学习C语言C语言数据类型(二)

    千次阅读 2020-01-31 00:21:01
    中,我们了解到“位与字节”的含义,并分析无符号短整形和有符号短整形的运算方式。本篇文章中,我们进行分析二进制到八进制、十六进制转换等内容。 章节预览: 1.2.2 无符号类型与有符号类型的区别 1.2.3 短整型...
  • 注:长整型至少应该和整形一样长,而整形至少短整型一样长 整形字面值 字面值是字面值常量的缩写——这是一种实体,指定了自身的值,并且不允许发生改变(声明为const的变量) 如果一个多字节字符常量的...
  • 整形家族包括char(字符型)unsigned char(无符号字符型)、short (短整形)unsigned short(无符号短整形)、int(整形unsigned int(无符号整形)、long(长整形unsigned long(无符...
  • C语言数据类型

    2021-03-21 12:51:51
    C语言数据类型 1.1、整型 C语言中的整型对应数学中的整数,整型变量是用来描述一个整数值的,整型变量经过计算后也只能是整数(整型)...(3)long int,又叫做long,长整型(>=整形) 练习题目: #include <stdio.h&
  • c语言分为: 基本数据类型 整数 整形 -- int 占四个字节 短整型 -- short int 占两个字节 长整形 -- long int 占八个字节 浮点数【实数】 ...
  • c语言数据问题

    2016-06-13 19:44:00
    变量都有作用域,链接属性,和存储类型3个属性,这三个属性决定了变量的作用域和生存期的问题 ...整形包括字符型,短整形,整形和长整型,他们都分为有符号的和无符号的类型 听上去长整型似乎要比短整形长,但...
  • 初识C语言

    2021-05-30 22:49:55
    文章目录前言一、数据类型二...long //长整型 4字节 long long //长长整形 8字节 float //单精度浮点数 4字节 double //双精度浮点数 8字节 可以使用sizeof()关键字计算数据类型的字节长度 int main() { p.
  • C语言数据类型、常量变量

    千次阅读 2019-01-14 16:45:45
    一、数据类型: 类型名 大小 ... 长整型 4 float 单精度浮点数 4 long long 更长的整形 8 double 双精度浮点数 8 二、常量 (1)字面常量 比如 1,2,...
  • 另外,整形还包括了长长整形 浮点型还包括双精度型 1、整型数据 包括整型变量和整型常量 1)整型变量: -基本类型为int型,在整型的表示符号int前加上不同的修饰符,就可以将int型扩展成别的类型,如short int -用...
  • sqlite中大量使用了变长整形...变长整型的每个字节的低7位有效,第8位是标志位。在组成可变长整数的各字节中,前面字节(整数的高位字节)的第8位置1,只有最后一个字节的第8位置0,表示整数结束。觉没觉得得和c语言的...
  • 一、数据类型 1、整数类型 类型 字节数 int(整形) 2/4(2或4个字节) unsigned int(无符号...long(长整型) ...unsigned long(无符号长整型) 4 long long(双长型) 4 unsigned long long(无符号...
  • C语言第三讲,基本数据类型 一丶基本数据类型讲解 在C语言当中,有四种基本数据类型 分别是: 整形 ...聚合类型(数组结构) ...整形 ...长整型 ...** 都分为有符号无符号的...规则: 长整型至少和整形一样长.而整形则至少应...
  • 学习C语言

    2019-12-17 21:00:41
    1.数据类型: char //字符数据类型 1个字节 short //短整型 2个字节 int //整形 4个字节 long //长整形 64位程序:8个字节;32位程序:4个字节 ...long long //更整形 8个字节 ...2.常量变量:不变的值,C语言...
  • 整形家族包括字符、短整型、整形和长整型,他们都分为**有符号(signed)**和**无符号(unsigned)**两种版本。 听上去“长整型”所能表示的值应该比“短整型”所能表示的值要大,但这个假设并不一定正确。规定整形...
  • 1、整型:字符、短整型、整型和长整形,他们分为有符号和无符号两种。 规则:长整型至少应该和整型一样长,而整型至少应该和短整型一样长。 ^枚举类型^是一种构造数据结构,当一个变量有几种可能的取值时,...
  • 复习:C语言

    2019-08-26 19:23:41
    C语言复习(1): ...long //长整型 long long //更长的整形 float //单精度浮点数 double //双精度浮点数 变量: 变量的作用域生命周期 (1)作用域 作用域(scope),程序设计概念,通常来...
  • 关键字 这些关键字不能作为常量名...修饰int,申明长整型变量或函数 longlong 修饰int,超长整形数据 signed 修饰整形数据,有符号数据类型 unsigned 修饰整形数据,无符号数据类型 restirct 用于限定约束...
  • C语言中0UL1UL表示什么意思?

    万次阅读 多人点赞 2018-01-10 15:19:16
    0UL--------无符号长整型0 1UL--------无符号长整型1 如果没有UL后缀,则系统默认为 int类型,即,有符号整形

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 135
精华内容 54
关键字:

c语言整形和长整型

c语言 订阅