C语言的基本数据类型、常量与字面值、关键字与标识符

C语言的基本数据类型、常量与字面值、关键字与标识符

基本数据类型

        六大基本数据类型:short、int、long、float、double、char

 整数形(定点型)

        C语言标准并没有明确给出每种整形的具体大小,它仅仅给出了一个大小关系的建议。

sizeof(short)<=sizeof(int)<=sizeof(long)<=sizeof(long long)

1、无符号整形unsigned

        表示大于等于0的正整数

类型名称 字节数 取值范围
unsigned short无符号短整型 2 0~2^16-1    (0~65535)
unsigned int无符号整形 4 0~2^32-1    (0~4294967295)
unsigned long无符号长整型 4 0~2^32-1    (0~4294967295)
unsigned long long无符号长长整形 8

0~2^64-1    (0~18446744073709551615)

  • 无符号整形的存储
    • 直接以数值的二进制形式存储。
    • 从低位开始按位放入内存中,高位空余补0。
    • 例如:

                        unsigned short age = 18;

                        1、18-->10010(二进制)

                        2、0000 0000 0001 0010

2、有符号整形signed

类型名称 字节数 取值范围
short短整型 2 -2^15~2^15-1
int整形 4 -2^31~2^31-1
long长整型 4 -2^31~2^31-1
long long长长整形 8 -2^63~2^63-1
  • 有符号整形在内存中的存储
    • 以补码的形式进行存储,可以通过补码形式用加法代替减法。
    • C语言整形中,某个整形数据类型的最大值+1变为最小值,最小值+1变为最大值,这种现象成为整形数值溢出。
    • 存储的值相当于一个环(此为补码),0000 0000~0111 1111为0到最大值(+127);最大值加1为1000 0000是最小负数值,1000 0000(最小负数值-128)~ 1111 1111(最大负数值-1)。
      • 原码:最高位为符号位,0代表正整数,1代表负整数。除符号位以外为数据位,存储数的绝对值的二进制形式。
      • 反码:
        • 正整数:原码本身
        • 负整数:符号位不变,数据位取反。
      • 补码:
        • 正整数:原码本身
        • 反码+1
      • 例如:

原码:0111 1111(+127)    1111 1111(-127)    1000 0000(0)

反码:0111 1111(+127)    1000 0000(-127)   1111 1111(0)

补码:0111 1111(+127)

          1000 0000(-128)     1000 0001(-127)    1111 1111(-1)   0000 0000(0)

                                short age = 18

                                0000 0000 0001 0010(正整数,原反补相同)

                                short a = -18

                                1000 0000 0001 0010(原码)

                                1111 1111 1110 1101(反码)

                                1111 1111 1110 1110(补码)

                                      short a = 1, b = -1;

                                      a+b = 0 

                                      a:0000 0000 0000 0001(补码)

                                      b:1111 1111 1111 1111(补码)                                

                                 a+b:1 0000 0000 0000 0000

浮点数类型(实数型)

        C语言标准给出的建议:sizeof(float)<=sizeof(double)<=sizeof(long double)

类型名称 字节数
float单精度浮点数类型 4
double双精度浮点数类型 8
long double长双精度浮点数类型 8
  • 浮点数的存储 IEEE-754标准(1985年提出)
    • 浮点数类型无法做到精确存储!
      • 十进制小数转二进制时,极大概率转换不尽。
      • 尾码在存储时要进行截断,舍弃一部分精度。
      • 浮点数类型只能在限定的范围内做到近似存储。
      • float仅能在6-7位数中做到近似存储(尽量保证精度)
    • 例子

-                 --------            -----------------------

(符号位1)    (阶码8)     (尾码23)

float存储4.25(十进制)

0    1000 0001   0001 0000 0000 0000 0000 000

1、将十进制小数转为二进制

        4.25(十进制)--> 100.01(二进制)

2、将二进制小数转为科学计数法形式

        100.01 -> 1.0001 * 2^2

3、求阶码,阶码 = 2+127=129

4、求尾码,尾码 = 0001

字符型

ASCII表:

48~57:0~9

65~90:A~Z

97~122:a~z

C语言的基本数据类型、常量与字面值、关键字与标识符

  • 字节数:1
  • char类型变量具有双重性:可以把它解释为一个字符,也可以解释为一个整数,实际的代码值取决于计算机环境。因此char类型的值可以算术运算中使用。
  • 例如:
char character = 74   //表示整数74,或者字符'J'
char letter = 'C'     //表示整数67,或字符'C'
letter = letter + 3   //表示整数70,或字符'F'

常量和字面值

  • const修饰变量:只读变量,常变量(常量)     
    • const修饰的变量为只读变量,其值不允许发生修改。
    • 被const修饰的变量,不允许进行赋值。
    • 被const修饰的变量,必须进行初始化。
  • 字面值
    • 整形字面值
      • 默认数据类型为int
      • 改变字面值类型:在字面值后面加后缀
        • U:unsigned
        • L:long
      • ​​​​​​​整形字面值无法表示short短整型
      • 字面值无法表示二进制
      • 十六进制字面值不区分大小写0x1F、0X1F
      • 例子:
        • ​​​​​​​12L(long)
        • 12LL(long long)
        • 12U(unsigned int)
        • 12ULL(unsigned long long)
        • 12,-12(int)
        • 0x12(int十六进制整数)
        • 012(int八进制整数)
    • 浮点数类型字面值
      • ​​​​​​​默认类型为double
      • 改变字面值类型:在字面值后面加后缀
        • ​​​​​​​F:float
        • L:long
      • ​​​​​​​例子:
        • ​​​​​​​3.14L(long double)
        • 3.14F(float)
        • 3.14(double)
        • 3.(double 3.0)
        •   .24(double  0.24)
        • 1.23E-2:(double   1.23*10^-2=0.0123)
        • 1e-6:(double  1*10^-6)
    • 字符型字面值
      • ​​​​​​​数据类型为char类型
      • 需用单引号引起来,仅能表示一个ASCII码表字符
      • 特殊字符,用\进行转义
        • ​​​​​​​'\n':换行符
        • '\t':制表符
        • '\'':单引号
        • '\"':双引号
        • '\r':回车符
        • '\a':响铃符
        • '\ddd':通过3位八进制数,表示某个字符
          • '\101':'A'
          • '\061':'1'
        • '\xhh':通过2位十六进制数,表示某个字符
          • '\x61'(97):'a'
    • 字符串字面值
      • ​​​​​​​使用双引号引起来
      • 末尾自动添加结束符(‘\0’,ASCII码是0)
      • 字符个数:字符串字面值一共包含的字符数量
      • 字符串长度:字符串中第一个'\0'之前的字符数量
      • “Hello World”:字符个数:12   字符串长度:11
      • “”:空字符串    字符个数:1     字符串长度:0
      • “a\x61b”  :字符个数:4      字符串长度:3
      • “a\0b”:字符个数:4          字符串长度:1
      • “a\061b”:字符个数:4      字符串长度:3
      • 两个字符串字面值相邻时,会自动拼接到一起。"ab""cd":"abcd"   字符个数:5     字符串长度:4

关键字(保留字)

        是整个语言范围内预先保留的标识符,如int、long、short、unsigned、char、float、double、void等。


标识符   

        用户编程时使用的名字,用于给变量、常量、函数、语句块等命名,以建立起名称与使用之间的关系。

上一篇:多图片上传


下一篇:Linux 上扫描/检测新的 LUN 和 SCSI 磁盘