精华内容
下载资源
问答
  • C语言基本数据类型

    多人点赞 2019-04-15 17:23:25
    C语言基本数据类型有以下几个: 1:短整型 short 2:长整形 long long 3:整形 int 4:单精度浮点型 float 5:双精度浮点型 double 6:字符型 char 这些都是C语言当中最基本的关键字,每种类型都有一定的长度范围: ...

    C语言基本数据类型有以下几个:
    1:短整型 short
    2:长整形 long long
    3:整形 int
    4:单精度浮点型 float
    5:双精度浮点型 double
    6:字符型 char
    这些都是C语言当中最基本的关键字,每种类型都有一定的长度范围:
    short :2 Bytes
    long long :8 Bytes
    int :4 Bytes
    float:8Bytes
    double:16Bytes
    char:1Bytes
    这些都表示有符号型的数据类型,表示的数据范围大小为-2^(n-1) ~ 2^(n-1) (n表示该数据类型所占的字节数),C语言中还有无符号型的以上数据类型,具体表示为 unsigned int等等,他们表示的数据范围是0~2^n(n表示该数据类型的字节数)。
    具体如下:

    在这里具体如下:插入图片描这些述
    这些数据类型的具体用法如下所示:

    在这里插入图片描述
    这些数据类型都有固定的输出格式,int为%d,long为%ld,double为%lf,float为%f,short为%h,char为%c。
    这里再说一下最基本的输入输出函数,输入函数scanf(“输入格式(%d,%f…)”,&变量名);输出函数printf(“输出格式(%d,%f,…)”,变量名);这两个函数都包含在stdio.h这个头文件中,输入输入遵循一一对应的原则,即函数前面的格式顺序一一对应后面的变量顺序,上面的程序可以说明这点。
    C语言还有很多种数据类型,以上的只是其中最基本的数据类型。

    展开全文
  • 关于C语言基本数据类型的介绍

    第一次学习C语言,那就从最基础的开始吧,哈哈。

    这篇主要是关于C语言的基本数据类型。


    基本数据类型包括包含两个部分,即整型类型和浮点类型。


    整型类型:

    基本整型(int)   

    短整型(short int)  

    长整型(long int)                                    

    双长整型(long long int)

    字符型(char)

    布尔型(bool) 取值只有0和1,0表示false,1表示true。


    浮点类型:

    单精度浮点型(float) 

    双精度浮点型(double)

    这些都只是部分,C语言还有很多的数据类型。不过这些的主要差别在于取值范围的大小不同,

    更具具体的问题,实际情况,我们要采用不同的数据类型,来满足设计要求。


    展开全文
  • C语言基本数据类型简介

    千次阅读 2017-11-16 13:56:12
    C语言基本数据类型简介 1.概述  C 语言包含的数据类型如下图所示: 2.各种数据类型介绍 2.1整型  整形包括短整型、整形和长整形。 2.1.1短整形  short a=1; 2.1.2整形  一般占4个字节(32位),...

    C语言基本数据类型简介

    1.概述

      C 语言包含的数据类型如下图所示:

    2.各种数据类型介绍

    2.1整型

      整形包括短整型、整形和长整形。

    2.1.1短整形

      short a=1;

    2.1.2整形

      一般占4个字节(32位),最高位代表符号,0表示正数,1表示负数,取值范围是-2147483648~2147483647,在内存中的存储顺序是地位在前、高位在后,例如0x12345678在内存中的存储如下:

      地址:0x0012ff78  0x0012ff79  0x0012ff7a  0x0012ff7b

      数据:  78      56        34      12

      定义:用int关键字,举例如下:

      int a=6;

    2.1.3长整形

      long a=10;

    2.2浮点型

      浮点型包括单精度型和双精度型。

    2.2.1单精度型

      浮点型,又称实型,也称单精度。一般占4个字节(32位),

      float a=4.5;

      地址:0x0012ff78  0x0012ff79  0x0012ff7a  0x0012ff7b

      数据:  00      00        90      40

    2.2.2双精度型

      一般占8个字节(64位)

      double a=4.5;

      地址:0x0012ff78  0x0012ff79  0x0012ff7a  0x0012ff7b  0x0012ff7c  0x0012ff7d  0x0012ff7e  0x0012ff7f

      数据:  00      00        00      00      00        00      12      40

    2.3字符类型

      在各种不同系统中,字符类型都占一个字节(8位)。定义如下:

      char c='a';

      也可以用字符对应的ASCII码赋值,如下:

      char c=97;

    3.数据类型与“模子”
      short、int、long、char、float、double 这六个关键字代表C 语言里的六种基本数据类型。

      怎么去理解它们呢? 举个例子:见过藕煤球的那个东西吧?(没见过?煤球总见过吧)。那个东西叫藕煤器,拿着它在和好的煤堆里这么一咔,一个煤球出来了。半径12cm,12 个孔。不同型号的藕煤器咔出来的煤球大小不一样,孔数也不一样。这个藕煤器其实就是个模子。

      现在我们联想一下,short、int、long、char、float、double 这六个东东是不是很像不同类型的藕煤器啊?拿着它们在内存上咔咔咔,不同大小的内存就分配好了,当然别忘了给它们取个好听的名字。

    在32 位的系统上short 咔出来的内存大小是2 个byte;
    int 咔出来的内存大小是4 个byte;
    long 咔出来的内存大小是4 个byte;
    float 咔出来的内存大小是4 个byte;
    double 咔出来的内存大小是8 个byte;
    char 咔出来的内存大小是1 个byte。
    (注意这里指一般情况,可能不同的平台还会有所不同,具体平台可以用sizeof 关键字测试一下)


    很简单吧?咔咔咔很爽吧?是很简单,也确实很爽,但问题就是你咔出来这么多内存块,你总不能给他取名字叫做x1,x2,x3,x4,x5…或者长江1 号,长江2 号…吧。它们长得这么像(不是你家的老大,老二,老三…),过一阵子你就会忘了到底哪个名字和哪个内存块匹配了(到底谁嫁给谁了啊?^_^)。所以呢,给他们取一个好的名字绝对重要。下面我们就来研究研究取什么样的名字好。

    4.变量的命名规则
    1)命名应当直观且可以拼读,可望文知意,便于记忆和阅读。
    标识符最好采用英文单词或其组合,不允许使用拼音。程序中的英文单词一般不要太复杂,用词应当准确。

    2)命名的长度应当符合“min-length && max-information”原则。
    C 是一种简洁的语言, 命名也应该是简洁的。例如变量名MaxVal 就比MaxValueUntilOverflow 好用。标识符的长度一般不要过长,较长的单词可通过去掉“元音”形成缩写。

    另外,英文词尽量不缩写,特别是非常用专业名词,如果有缩写,在同一系统中对同一单词必须使用相同的表示法,并且注明其意思。

    3)当标识符由多个词组成时,每个词的第一个字母大写,其余全部小写。比如:
       int CurrentVal;
    这样的名字看起来比较清晰,远比一长串字符好得多。

    4)尽量避免名字中出现数字编号,如Value1,Value2 等,除非逻辑上的确需要编号。比如驱动开发时为管脚命名,非编号名字反而不好。
    初学者总是喜欢用带编号的变量名或函数名,这样子看上去很简单方便,但其实是一颗颗定时炸弹。这个习惯初学者一定要改过来。

    5)对在多个文件之间共同使用的全局变量或函数要加范围限定符(建议使用模块名(缩写)作为范围限定符)。
    (GUI_ ,etc)标识符的命名规则:

    6)标识符名分为两部分:规范标识符前缀(后缀) + 含义标识。非全局变量可以不用使用范围限定符前缀。

    7)作用域前缀命名规则。

    8)数据类型前缀命名规则。

    9)含义标识命名规则,变量命名使用名词性词组,函数命名使用动词性词组。例如:

    变量含义标识符构成:目标词+ 动词(的过去分词)+ [状语] + [目的地];

    函数含义标识符构成:动词(一般现时)+目标词+[状语]+[目的地];

    10)程序中不得出现仅靠大小写区分的相似的标识符。例如:
       int x, X; 变量x 与X 容易混淆
       void foo(int x); 函数foo 与FOO 容易混淆
       void FOO(float x);
    这里还有一个要特别注意的就是1(数字1)和l(小写字母l)之间,0(数字0)和o(小写字母o)之间的区别。这两对真是很难区分的,我曾经的一个同事就被这个问题折腾了一次。

    11)一个函数名禁止被用于其它之处。例如:
    #include "c_standards.h"
    void foo(int p_1)
    {
       int x = p_1;
    }
    void static_p(void)
    {
       int foo = 1u;
    }

    12)所有宏定义、枚举常数、只读变量全用大写字母命名,用下划线分割单词。例如:
    const int MAX_LENGTH = 100; //这不是常量,而是一个只读变量,具体请往后看
       #define FILE_PATH “/usr/tmp”

    13)考虑到习惯性问题,局部变量中可采用通用的命名方式,仅限于n、i、j 等作为循环变量使用。
    一定不要写出如下这样的代码:
       int p;
       char i;
       int c;
       char * a;
    一般来说习惯上用n,m,i,j,k 等表示int 类型的变量;c,ch 等表示字符类型变量;a 等表示数组;p 等表示指针。当然这仅仅是一般习惯,除了i,j,k 等可以用来表示循环变量外,别的字符变量名尽量不要使用。

    14)定义变量的同时千万千万别忘了初始化。定义变量时编译器并不一定清空了这块内存,它的值可能是无效的数据。这个问题在内存管理那章有非常详细的讨论,请参看。

    15)不同类型数据之间的运算要注意精度扩展问题,一般低精度数据将向高精度数据扩展。

    展开全文
  • c语言基本数据类型及其使用

    千次阅读 2016-11-18 22:43:44
    C语言基本数据类型及应用
    1. 整型int

      C 语言提供了很多整数类型(整型),这些整型的区别在于它们的取值范围的大小,以及是否可以为负。int是整型之一,一般被称为整型。以后,在不产生歧义的情况下,我们把整数类型和int都称为整型。
      int代表有符号整数,也就是说,用int声明的变量可以是正数,可以是负数,也可以是零,但是只能是整数。标准规定int的最小取值范围是 -32767 到 32767。int的取值范围因机器而异,但是一定要大于或者等于 -32767 到 32767。一般来说,int占用一个字的内存空间。因此,字长为 16 位(Bit)的旧式 IBM 兼容机使用 16 位来储存整型int,取值范围是
      -32768 到 32767 。目前的个人电脑一般都是 32 位字长的,这些电脑中,int一般也是 32 位的,取值范围是 -2147483648 到 2147483647。对于使用 64 位 CPU 的电脑,使用更多位储存int也是很自然的事情,取值范围当然也会更大。

    2. 声明int类型的变量
      正如我们在以前的教程里看到的那样,int用于声明整型变量:以int打头,后面跟着变量的名字,最后以分号(;)结束。例如:
      interns; /* 声明一个变量 */
      /* 注意:一定要用逗号(,),不能用分号(;)*/
      int hogs, cows, goats; /* 声明三个变量 */
      以上声明创建了变量,但是没有给它们提供“值(value)”。在前面的教程中,我们已经用了两种方法使变量获得“值”。一种是赋值:cows = 500; 。另一种是使用scanf函数:scanf( “%d”, &goats ); 。下面我们来学习第三种方法。
    3. 初始化变量
      初始化变量是指给变量赋初值:声明变量的时候,在变量名的后面写上等号(=),然后写下你希望赋予变量的“值”。例如:
      int hogs = 21;
      int cows = 32, goats = 14;
      int dogs, cats = 94;
      以上声明创建了变量,并且为这些变量分配了空间,同时也赋了初值。注意,第三行中只有 cats 被初始化为 94,而 dogs 没有被初始化!如下图:
    4. int常量
      上面的例子中,21、32、14,以及 94 都是整数常量。C 语言中,整数常量的默认类型是int。如果整数常量的大小超过了int的取值范围,那么编译器将会把这个整数常量当作 long int类型来处理,这个我们后面还会讲到。21、32、14 和 94 都在int的取值范围之内,因此它们都是int常量。
    5. 输出int型数据
      我们可以用printf函数来输出int型数据。正如我们在前面的教程中看到的那样,占位符 %d
      代表输出的是int型数据,它告诉printf函数在什么地方输出相应的int型数据。%d 也被称为格式限定符(format specifier),因为它指定了printf函数应该使用什么形式来输出数据。printf函数的第一个参数只能是字符串,这个字符串被称为格式串(format string)。格式串中有多少个 %d,我们就应该相应地提供多少个int型参数给printf函数。int型参数可以是int型变量,int型常量,以及结果为int型的表达式等。例如:
      int year = 2005; /* year 是int型变量 */
      printf( “Today is %d-%d-%d “, year, 9, 20 + 9 ); /* 20 + 9 是加法表达式 */
      保证格式限定符的数目和参数数目一致是我们的责任,编译器不负责捕捉这种错误!例如:
    #include <stdio.h>
    int main(void)
    {
    int ten = 10, two = 2;
    printf("%d minus %d is %d ", ten ); /* 少写了两个参数 */
    getchar(); /* 等待用户按回车 */
    return 0;
    }

    这个程序可以通过编译,但是运行结果将会出乎意料,因为我们少写了两个参数。标准规定,如果格式限定符的数目大于参数数目,则printf函数的行为是未定义的;如果参数数目大于格式限定符的数目,则多余的参数会被忽略。
    6. 八进制(octal)和十六进制(hexadecimal)
    C 语言中,整数常量默认是十进制(decimal)整数。通过在整数常量前面加上特定的前缀,可以把它设定为八进制或者十六进制整数。前缀 0x 或者 0X 把整数常量设定为十六进制整数。注意,是数字 0 ,而不是字母 O ,别搞错了哦!例如:十进制的 16 用十六进制来表示是 0x10 或者 0X10 。在整数常量前面加上前缀 0 ,表示它是八进制整数。注意,是数字 0 ,而不是字母 O 。例如:十进制的 16 表示为八进制就是 020 。
    7. 以八进制或者十六进制形式输出数据
    使用格式限定符 %o 可以以八进制的形式输出整数。注意,是小写字母 o ,不是数字 0 。使用 %x 或者 %X 可以以十六进制的形式输出整数。小写 x 表示输出使用小写字母,大写 X 表示输出使用大写字母。使用 %#o,%#x 或者 %#X,得到的输出将包括前缀 0,0x 或者 0X。例如:

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

    这个程序的输出是:
    dec = 200; octal = 310; hex = c8; HEX = C8
    dec = 200; octal = 0310; hex = 0xc8; HEX = 0XC8
    1. 其它整数类型
    int是 C 语言的基本整数类型,可以满足我们处理一般数据的需求。C 语言还提供了四个可以修饰int的关键字:short、long、signed,以及 unsigned。利用这四个关键字,C 语言标准定义了以下整数类型:
    1) short int(可简写为 short),和int一样,也是有符号整数
    2) long int(简写:long),有符号整数
    3) long longint(简写:long long),C99 标准添加的类型,有符号整数
    4) unsigned int(简写:unsigned),无符号整数,不能表示负数
    5) unsigned long int(简写:unsigned long),无符号整数,不能表示负数
    6) unsigned short int(简写:unsigned short),无符号整数,不能表示负数
    7) unsigned long longint(简写:unsigned long long), C99 添加的类型,无符号整数
    8) 所有没有标明 unsigned 的整数类型默认都是有符号整数。在这些整数类型前面加上 signed 可以使读者更清楚地知道这些是有符号整数,尽管有没有 signed 都表示有符号整数。
    例如:signed int等同于int。
    一般我们把 short 称为短整型,把 long 称为长整型,把 long long称为超长整型,把int称为整型。unsigned 打头的那些整数类型统称为无符号整型。例如:我们称 unsigned short 为无符号短整型。以此类推。
    2. 声明方式
    这些整数类型的声明方式与int类型的声明方式一样。例如:
    longintestine;
    long johns;
    shortinterns;
    short ribs;
    unsignedints_count;
    unsigned players;
    unsigned long headcount;
    unsigned short yesvotes;
    long longago; /* C99 特有 */
    unsigned long long ego; /* C99 特有 */
    如果您的编译器不支持 C99 标准,那就不能使用 long long和 unsigned long long。
    3. 取值范围(表示范围)
    标准也规定了这些整数类型的最小取值范围。short 的最小表示范围和int一样,都是
    -32767 到 32767 。也就是 -(2^15 - 1)到(2^15 - 1)。其中,2^15表示 2 的 15 次方。类似地,2 的 20 次方记作 2^20 ,以此类推。注意:C 语言中 2^15 并不表示 2 的 15 次方,为了书写方便,我们姑且这么表示。long 的最小取值范围是 -2147483647 到 2147483647 。
    也就是 -(2^31 - 1) 到 (2^31 - 1) 。unsigned short的最小表示范围和unsigned int一样,都是 0 到 65535(2^16 - 1)。unsigned long 的最小取值范围是 0 到 4294967295(2^32 - 1)。long long的最小取值范围是 -9223372036854775807(-(2^63 - 1))到 9223372036854775807(2^63 - 1);unsigned long long是 0 到 18446744073709551615(2^64 - 1)。
    标准规定,int的表示范围不能小于 short 的表示范围,long 的表示范围不能小于int的表示范围。这就是说 short 型变量占用的空间可能比int型变量少,而 long 型变量占用的空间可能比int型变量多。16 位(bit)的计算机中,int和 short 一般都是 16 位,而 long 是 32位;32位的计算机中,short一般是 16 位,而long和int是 32位。TC2(16位的编译器)中,int是16位的;而Dev-C++(32 位的编译器)中,int是 32 位的。
    使用 unsigned int声明的变量只能表示非负整数(0 和正整数)。如果int是 16 位的话,那么 unsigned int的表示范围是 0 到 65535(2^16 - 1)。这是因为 unsigned 不需要符号位,可以把 16 个位全都用于表示整数。而int需要一个位作为符号位,用于表示正负,只有 15 个位用于表示整数。
    目前,long long一般 64 位,long 是 32 位,short 是 16 位,而int或者 16 位,或者 32 位。具体某个编译器到底使用多少位来表示这些类型,我们可以用运算符sizeof来获取。例如:
    printf( “%lu “, (unsigned long)sizeof(int) * 8 ); /* 输出int的位数 */
    printf( “%zu “, sizeof(short) * 8 ); /* 输出 short 的位数 */
    sizeof运算符返回其操作数占用空间的大小,以字节(Byte)为单位。注意,C 定义字节的大小为 char 类型的大小。char 通常是 8 位(bit)的,当然也可以更大。这里我们假设 char 是 8 位的。点击查看 char 类型详细介绍
    sizeof的用法我们以后会讲到,现在只要有个印象就好了。第二句中的 %zu是 C99 特有的,如果您的编译器不支持 C99(准确地说,应该是如果您的编译器使用的库函数不支持 C99),运行结果将会出错。
    4. 整数类型的选择
    如果您要处理的只是非负整数,那么应该优先使用 unsigned 打头的那些整数类型。如果您要处理的整数超出了int所能表示的范围,并且您的编译器中,long 的表示范围比int大,那就使用 long。不过,若非必要,尽量不要用 long,因为它可能会降低程序运行效率。有一点要注意:如果您的编译器中,long 和int都是 32 位的,并且您需要使用 32 位整数,那么应该用 long,而不要用int。只有这样,我们的程序才可以安全地移植到 16 位的计算机,因为 16 位的计算机中,int一般也是 16 位的。类似地,如果您需要使用 64 位整数,那就用 long long。如果int是 32 位的话,那么使用 short 可以节省空间,不过您得确保您要处理的整数不会超出 short 的表示范围。这种“节省”对内存大的计算机来说,是没什么意义的。
    5. long 型常量和 long long型常量
    一般来说,整数常量是被当作int类型来存储的。如果我们使用的整数常量超出了int的表示范围,C 语言规定编译器自动使用 unsigned int来处理这个常量。如果 unsigned 也不足以表示这个常量的话,编译器就会用 long。如果还表示不了的话,那就依次用 unsigned long,long long,unsigned long long。如果 unsigned long long也表示不了,那么编译器就没辙了。注意:long long和 unsigned long long是 C99 特有的。例如:如果int是 16 位的话,它就表示不了常量 1000000。编译器会使用 long 来处理这个常量,因为 unsigned int也表示不了 1000000 。
    同样,十六进制和八进制整数常量通常也是被作为int来处理。但是,当我们使用的常量超出了int的表示范围后,编译器会依次使用unsigned int,long,unsigned long,long long和 unsigned long long。直到所使用的类型足以表示那个常量为止。
    有时,我们使用的是较小的常量,但是我们希望这个常量被当作 long 来处理,这就需要在这个常量后面加上后缀 l(小写字母 l)或者 L(大写字母 L)。我们应该避免使用 l ,因为 l 容易和数字 1 混淆。例如:整数常量 7 是被作为int来处理的,但整数常量 7L(或者 7l)是被作为 long 来处理的。类似地,在整数常量后面加上后缀ll或者 LL ,这个常量就会被当作 long long来处理。例如:3LL 。如果想使用无符号整数常量的话,还要配合使用后缀 u 或者 U 。例如:2u,3U,4Lu,5ul,6LU,7LLU,8Ull,9uLL 。
    这些后缀也可以用于十六进制和八进制整数常量。例如:020L,010LL,0x30uL,0x40ull 。
    1. 输出各种整数类型的变量
    输出不同类型的整数,需要使用不用的格式限定符。输出 unsigned int类型的整数,要用 %u 。输出 long ,要用 %ld;如果要以十六进制或者八进制形式输出,那就用 %lx(或者%lX)或者 %lo。注意:虽然整数常量的后缀使用大写或者小写英文字母都没关系,但是它们格式限定符必须使用小写!如果我们要输出 short 类型的整数,可以在 %d 中间加上前缀 h,也就是%hd;同理,%ho 和 %hx(或者 %hX)分别表示以八进制或十六进制形式输出。前缀 h 和 l 可以和 u 组合,表示输出无符号整数。例如:%lu表示输出 unsigned long 类型的整数;%hu表示输出unsigned short类型的整数。如果您的编译器支持C99,可以使用 %lld和 %llu分别表示输出 long long和 unsigned long long。下面我们来看一个输出各种类型整数的程序:

    #include <stdio.h>
    int main(void)
     {
    unsigned int un = 3000000000; /* 我使用的编译器int是 32 位的 */
    
    short end = 200; /* 而 short 是 16 位的 */
    
    long big = 65537;
    
    printf("un = %u and not %d ", un, un);
    
    printf("end = %hd and %d ", end, end);
    
    printf("big = %ld and not %hd ", big, big);
    
    printf("Press ENTER to quit...");
    
    getchar();
    
    return 0;
     }

    使用Dev-C++ 编译运行这个程序输出结果如下:
    un = 3000000000 and not -1294967296
    end = 200 and 200
    big = 65537 and not 1
    Press ENTER to quit…
    这个程序表明,错误使用格式限定符会导致意想不到的输出。首先,错误使用 %d 来做无符号整型变量 un 的格式限定符,导致输出的是负数。这是因为我的计算机使用相同的二进制形式来表示 3000000000 和 -129496296 ,而计算机只认识二进制。所以,如果我们使用 %u 告诉printf输出无符号整数,输出的就是 3000000000;如果我们误用了 %d,那么输出的就是一个负数。不过,如果我们把代码中的 3000000000 改成 96 的话,输出就不
    会出现异常。因为 96 没有超出int的表示范围。
    然后,对于第二个printf,无论我们使用 %hd还是 %d,输出的结果都是一样的。这是因为 C 语言标准规定,当 short 类型值传递给函数时,要自动转化成int类型值。之所以转化成int,是因为int被设计为计算机处理效率最高的整数类型。所以,对于 short 和int大小不同的计算机来说,把变量 end 转化成int类型再传递给函数,速度更快。如此说来,h 好像没有存在意义。其实不然。我们可以用 %hd来看看较大的整数类型被截断成 short 类型的时候会是什么样的。
    而第三个printf,由于误用 %hd,导致输出是 1。这是因为,如果 long 是 32 位的话,65537 的二进制形式便是 0000 0000 0000 0001 0000 0000 0000 0001,而 %hd命令printf输出 short 类型的值,从而导致printf只处理 16 位数据(假设 short 是 16 位的),最终导致输出 1。
    在前面的教程里,我们说过,保证格式限定符的数目和参数数目一致是我们的责任。同样,保证格式限定符的类型和参数类型一致也是我们的责任!正如上面所说的那样,错误使用格式限定符会导致意想不到的输出!标准规定,如果任意参数和与其对应的格式限定符类型不一致,则printf的行为是未定义的;如果格式限定符本身就是非法的,则printf的行为也是未定义的。
    2. 整数溢出

    首先请看以下程序:

    #include <stdio.h>
    
    int main(void)
    
    {
    
    /* 32 位int表示范围的上限和下限 */
    
    int i = 2147483647, j = -2147483648;
    
    unsignedint k = 4294967295, l = 0;
    
    printf("%d %d %d %d ", i, i+1, j, j-1);
    
    printf("%u %u %u %u %u ", k, k+1, k+2, l, l-1);
    
    printf("Press ENTER to quit...");
    
    getchar();
    
    return 0;
    
    }
    

    使用Dev-C++ 编译运行这个程序输出结果如下:

    2147483647 -2147483648 -2147483648 2147483647

    4294967295 0 1 0 4294967295

    Press ENTER to quit…

    本例中,i+1 是负数,j-1 是正数,k+1 是 0,l-1 是 4294967295 。这是因为加减运算过后,它们的值超出了它们对应的那种整数类型的表示范围,我们把这种现象称为溢出。

    unsigned int型变量的值如果超过了上限,就会返回 0,然后从 0 开始增大。如果低于下限,那么就会到达 unsigned 型的上限,然后从上限开始减小。就好像一个人绕着跑道跑步一样,绕了一圈,又返回出发点。一般,int型变量溢出的话,会变成负数,或者正数。

    对于 unsigned 类型的整数,它们溢出时的情况一定和上面描述的一样,这是标准规定的。但是标准并没有规定有符号整数溢出时会出现什么情况。这里描述的有符号整数溢出时出现的情况是最常见的,但是在别的计算机,使用别的编译器,也可能出现不同的情况。

    展开全文
  • C语言基本数据类型转换

    千次阅读 2017-05-22 16:02:56
    数据类型 类型转换 C语言
  • C语言中的三种基本数据类型是:整型 、实型 、字符型 。每种类型又可以分为常量和变量。 整型常量: (1) 十进制的整型常量:由数字0~9组成。如:0、10、365、-12等。 (2) 八进制的整型常量:以0开头,由数字0~7...
  • c语言有丰富的数据类型,大致上包括
  • C语言基本数据类型之整型变量

    千次阅读 2019-07-10 15:42:30
    基本数据类型之整型常量 在c语言中,整形常量分为八进制、十六进制、和十进制三种 ⑴八进制必须以0开头,以0作为八进制数的前缀。数码取值为0-7,八进制数通常是无符号数 ⑵十六进制常整数的前缀为0X或者0x。数码...
  • C语言基本数据类型输入输出格式

    千次阅读 2020-10-06 17:23:01
    首先看一下C语言基本数据类型C语言中,用int关键字来表示基本的整数类型。后3个关键字(long、short和unsigned)和C90新增的signed用于提供基本整数类型的变式,例如unsigned short int和long long int。char...
  • 一、C语言基本数据类型及其运算  1.C 语言包含的数据类型,如下图所示:     short、int、long、char、float、double 这六个关键字代表C 语言里的六种基本数据类型。   不同数据类型所占用的内存...
  • C语言基本数据类型(1)

    千次阅读 2019-04-11 10:01:40
    5 C语言支持的基本数据类型 通过前面的举例分析,我们知道房子的类型,决定了房子的属性。例如,一房一厅的房子,有一个房间的空间;两房一厅的房子,有两个房间的空间。同理,在C语言中,提供了“数据类型”,它...
  • C语言基本数据类型short、int、long、char、float、double

    万次阅读 多人点赞 2016-01-21 02:00:38
     C 语言包含的数据类型如下图所示 2.各种数据类型介绍 2.1整型  整形包括短整型、整形和长整形。 2.1.1短整形  short a=1; 2.1.2整形  一般占4个字节(32位),最高位代表符号,0表示正数,1表示负数...
  • C语言基本数据类型的长度

    千次阅读 2014-04-12 11:25:02
    学C也有一段时间了,但是对C语言基本数据类型的存储空间长度一致都
  • c语言基本数据类型和输入输出函数

    千次阅读 2013-07-18 14:43:58
    C的基本数据类型 char,int,float,double,signed,unsigned,long,short,void // boolean 1个字节 byte 1个字节 short 2个字节 //int 4个字节 long 8个字节 double 8个字节 float 4个字节 char 2个字节 // c语言中...
  •   其实学习C语言的时候有一件很头疼的事就是各种各样的数据类型,不同的场合不同的用途不同的数据要使用不同的数据类型,那又为什么要分出这么多种类型呢,因为类型决定了开辟空间的大小,开辟空间的大小又决定了...
  • 一、 C语言基本数据类型 short、int、long、char、float、double 这六个关键字代表C 语言里的六种基本数据类型。 在不同的系统上,这些类型占据的字节长度是不同的: **16位编译器: char/unsigned char :1字节 ...
  • C语言基本数据类型及转换规则

    千次阅读 2014-05-08 16:04:13
    C语言基本数据类型;有点奇怪的是为什么float和double不用signed/unsigned修饰。 符号属性 长度属性 基本型 所占位数 取值范围 输入符举例 输出符举例 -- -- char 8 -2^7 ~ 2^7-1 %...
  • 基本数据类型:byte,int ,char, float, double, enum 构造数据类型:数组,结构体,共用体 指针类型 :指针 空类型 : void 二 基本数据类型的特点 不可以再分解为其他类型,基本类型就是自我说明。 三 图解 ...
  • C语言可以用来干嘛? 简 介:上学的时候没有想过C语言可以干嘛,就是应付考试,毕业之后再问C语言能干嘛? 答案是: 整个计算机界的基石都是C语言搭建的,现在有这么多语言都号称要取代C,可是没有一个能做到,...
  • C语言基本数据类型

    2017-01-18 18:39:55
    C语言基本数据类型 C语言基本数据类型:整型,字符型,浮点型 整型的分类 整型可以分为短整型(short int),整型(int)。长整型(long int),长长整型(long long int)四种,每种都可以分为有符号和无符号...
  • 另外,printf必须使用对应的转换说明符才能打印对应的数据类型数据,下面我们整体了解一下。有符号整型有符号整型可以用来定义正整数和负整数,有下面几种类型:int:最常使用的类型,是系统的基本类型,C语言标准...
  • C语言基本数据类型

    万次阅读 多人点赞 2019-03-19 17:02:35
    C语言基本数据类型 c语言基本数据类型有9个,分别是int、long、short、char、float、double、void、signed、unsigned。其中int、long、short、char、float、double在java语言中常见。其余三个在java语言没有。 ...
  • 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语言基本数据类型:整型(int)用法详解    1. 整型int   C 语言提供了很多整数类型(整型),这些整型的区别在于它们的取值范围的大小,以及是否可以为负。int是整型之一,一般被称为整型。以后,在不产生歧义...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 198,960
精华内容 79,584
关键字:

属于c语言基本数据类型的是

c语言 订阅