3.1 数据的表现形式和运算

3.2.1 常量和变量

  1. 常量
    1. 含义:其值不可被改变的量
    2. 分类:(1)整型常量;(2)实型:十进制小数,指数。(3)字符:普通字符和转义字符;(4)字符串常量:用双引号括起来;(5)符号常量:用预编译指令“ #define” 指定一个符号名称代表一个常量
  2. 变量
    1. 一个有名字的具有特定属性的存储单元; 用来存放数据(变量的值),变量的值是可以改变的。
    2. 变量名和变量值区别:变量名实际上代表的是一个存储地址,变量值指的是存储的数据。在对程序编译连接时,由编译器给变量名分配对应的内存地址;从变量中取值实际上是通过变量名找到对应的内存地址,从该内存中取值。
    3. 常变量
    • 格式:在关键字之前加const ,如:const int a,在变量存在期间其值不能被改变。
    • 常变量和常量的异同:1)常变量具有变量的基本属性,有类型,占据存储单元,但值不能被改变;常变量是有名字的不变量,常量没有名字。
  3. 标识符

    • 字符序列(对象的名字)
    • 标识符的命名规范:不能以数字开头;由字母、数字、下划线组成。
    1. 数据类型

    2. (1)类型:就是对数据分配存储单元的安排,包括长度、存储形式。

    3. (2)数据类型的分类:
      1. 基本类型
        • 整型
          1. 基本整型(int)4byte
          2. 短整型(short)2
          3. 长整型(long) 4
          4. 双长整型(long long int)8
          5. 字符型(char) 1
          6. 布尔型(bool)
        • 浮点型
          1. 单精度浮点型(float)4
          2. 双精度浮点型(double)8
          3. 复数~(float_complex.)
      2. 枚举(enum)、空类型(void)
      3. 派生类型
        1. 1. **指针类型()**
        2. 1. **数组 ([])**
        3. 1. **结构体(struct)**
        4. 1. **共用体(union)**
        5. 1. **函数类型**

5. 整型数据(见P44)

  1. 存储方式:二进制补码
  2. 整型变量的存储空间和值的范围
    1. 说明 :有符号与无符号类型(unsigned-)的大小相同
      • int :4字节(32位);-2147 483 648~2 147 483 647(-2^31-(2^31-1))
      • short :2字节;-32 768~32 767(-2^15~(2^15-1))
      • long:4字节;-2 147 483 648~2 147 483 647(-2^31-(2^31-1))
      • long long :8字节;-9 223 372 036 854 775 808~9 223 372 036 854 775 807(-2^63~(2^63-1))
    2. 字符型数据(P47)
  3. 包括ASCII字符集在内的字符集含有127个字符,以整数形式存储;c语言中指定用一个字节(8位)存放一个字符。
  4. 字符变量的存储空间和值范围:1)(signed)char1 字节 ;-128~127。2)unsigned char :1;0~255
    1. 浮点型数据
  5. 实数称为浮点型数据,实数是以指数形式存放在内存中的;
  6. 分类:1)float : 4 byte; 2) double : 8 byte;3)long double :8 byte
    1. 常量
  7. 整型常量:int 型 :4字节;long int : 4字节
  8. 浮点型常量:凡是以指数或小数形式出现的实数均为浮点型常量,内存中以指数形式存储;默认为double。

    3.2 运算符和表达式

    3.2.1 C运算符分类(基本)

  9. 算数:+ - * / % 等

  10. 关系:= > < >= <= !=
  11. 逻辑:!&& ||
  12. 位运算:<< >> ~ | ^ &
  13. 赋值:= 及其扩展
  14. 条件: (?:)
  15. 指针:(* ,&)
  16. 逗号:(,)
  17. 求字节数:(sizeof )
  18. 下标:( [ ] )

    3.2.2 算数表达式和运算符的优先级与结合性

  19. 含义:用(算术)运算符和括号将运算对象连接起来的,符合规则的式子称为C(算术)表达式。

  20. C语言的优先级:按运算符的优先级别处理
  21. C语言的结合性:1)一个操作数两侧的运算符优先级相同按“规定的结合性”。2)算术运算符: 按“从左至右的结合方向—“左结合性”。3)赋值运算符:按“从右至左”—“右结合性”

    3.2.3 强制类型转换运算符

  22. 格式: (类型名) (表达式)

  23. 注意:表达式如果为像:x+y,应该用括号;强制类型转换后得到的是一个所需类型的中间数据,而原变量的类型没变。

    3.3 C语句

  1. 分类
    1. (1)控制语句:九种:if—else;for;while 等。
    2. (2)函数调用语句:函数加一个分号组成。
    3. (3)表达式语句:加一个分号构成;空语句;符合语句。
  2. 赋值语句

    1. 赋值运算符:“=”;“+=”·····
    2. 赋值表达式: 变量 赋值运算符 表达式
      1. 赋值运算符左侧是一个可修改的左值;
      2. 左值应当为存储空间且可被赋值;左值都可充当右值。
    3. 赋值过程中的类型转换

      1. 浮点数→(赋值)整型变量,先对其取整再赋值<br /> 整型→浮点型:数值不变,但以浮点数形式存储于变量<br /> 双精度→单精度:先将双精度转换为单精度,取6-7位的有效数字存储到float变量的4字节中<br /> 多字节整型数据→少字节整型数据:只将高字节数的低位数据赋值到低字节变量(截断)
    4. 赋值表达式和赋值语句

      1. 区别:赋值表达式末尾无分号;赋值语句末尾必须有分号。赋值语句包含赋值表达式
      2. 一个表达式可以包含一或多赋值表达式

        3.4 输入与输出

        3.4.1 举例

  3. scanf(“%d”,&a); 函数中“&”取地址符号,&a:表示取a的地址值;“从终端输入的数据存储到地址为&a的存储空间。”

  4. printf(“%d”,a); 输出变量a的值。

    3.4.2 输入输出的有关概念

  5. 输入输出是由C标准库函数提供的,c语言本身不提供输入输出语句;

  6. 预处理指令 :#include < .h>,#include “ .h”(自定义)

    3.4.3 printf 函数输出和scanf函数输入

  7. 1.printf(“格式控制字符串”, 输出表列):格式字符串包括:①格式声明 (% +格式字符) ,②普通字符

  8. 2.scanf 函数输入
    1. 格式字符和printf一致
    2. 格式附加字符:① l :%ld 输入长整型数据;② h: 短整型 %hxo ; 本输入项在读入后不赋给相应的变量。
    3. 注意的问题:
  9. 格式字符

    1. d :输出有符号的十进制整数; %7.2d 列宽7,小数占2位
    2. c: 输出一个字符;
    3. s: 输出一个字符串;
    4. f :以小数形式输出实型数据(单双精度)
    5. 其余类型:e: 指定以指数形式输出;i :十进制整型 ; o 八进制整型 ; x 十六进制整型 ;u 以十进制形式输出无符号型数据;g 输出浮点数(%f或%eh选择长度较短的输出)·····

      3.4.4 字符输入输出函数

      1. 1.putchar(c)函数:输出一个字符
      2. 2.getchar (c) :输入一个字符,可以获得可显示的和不可显示的字符(如控制符);