[2018年最新整理]C语言程序设计第2章基本数据类型和运算
第2章 C语言基础 北京科技大学 计算机系 本章主要内容 本章介绍C语言的基础,包括: 数据类型 运算符和表达式 均是程序设计的基本知识 为什么讨论这些知识? 例如: 【例2.1】计算圆的面积,半径为 5 cm。 程序如下: 分析: 计算机操作处理时,要完成以下工作: 在内存中给半径 r 和运算结果 area 开辟存储空间,存放它们的值。应该留多大的地方来存放它们的值? 数据 5 和 3.14 与 r 、area 不同,它们是在编写程序时就给出确定的值,在运算过程中不会改变。这样的数计算机怎么处理? 对整数 5 和小数3.14 ,计算机存放时是否有区别? C语言的数据类型 C数据类型 2.1.1 整型数据 1.整型数据的类型 基本整型数据 int ,分配 2 Byte 短整型数据 short int,分配 2 Byte 长整型数据 long int,分配 4 Byte 整型数据均以二进制补码形式存储 计算机中正、负数的表示 例如:109 =(1101101)2 要区别:+109 和 -109 方法是:将符号也数码化 即:正的符号 +用 0 表示 负的符号 -用 1 表示 问题:计算机计算复杂化 例如计算: (-19)+(+22) 1001 0011 + 0001 0110 原码、反码和补码 正数:原码、反码、补码相同 符号位为0,数值为对应的二进制数。 +109 2. 有符号和无符号整型数据 有符号的整型数据 signed int 无符号的整型数据 unsigned int 区别是将最高位看作符号位还是数据位 例如: main( ) { unsigned int m; m= 65448; printf("\nm=%d\n",m); printf("m=%u\n",m); } 整型数据的类型及规定 方括号表示可选项 int 分配2 Byte,long分配4 Byte 2.1.2 实型数据 1.实型数据的类型 单精度实型数据 float,分配4 Byte 双精度实型数据double,分配 8 Byte 2.实型数据的存储 实型数据的类型及规定 C标准并未具体规定各种实型数据所占字节数,也不规定具体小数和指数部分的位数。 一般而言,小数部分位数多,数据表示的有效数字多,精度就高;而指数部分位数多,则表示的数据范围更大。 2.1.3 字符型数据 字符型数据char,分配 1 Byte 字符型数据是指字母、数字、各种符号等用ASCII值表示的字符 例如 'a' 是一个char类型数据,称作字符常量,存储: 2.2 常量、变量与标准函数 主要内容: 常量 变量 标准库函数 2.2.1 常量 在运行程序的过程中值保持不变的量 1.整型常量 十进制:0~9 八进制:0~7,以 0开头 十六进制:0~9,A~F/a~f,以 0x或 0X 开头 1. 整型常量 整型常量的类型: 根据值大小默认类型。 整型常量后面加l或L,则认为是long int型 例如:123L、0L、432l、0x100l 2. 实型常量 十进制形式 1.0 1. +12.0 -12.0 0.0 指数形式 1e3 1.8e-3 -123E-6 -.1E-3 3. 字符型常量 可视字符常量 单引号括起来的单个可视字符 例如:'a'、'A' 、'+' 、'3'、' ' 等 转义字符常量 单引号括起来的 \ 与可视字符组合,例如: 4. 字符串常量 用双引号括起的一个字符序列 例如:"ABC"、"123"、"a"、 "\n\t " "\nGood morning" 字符串常量的长度 : 所包含的字符个数 字符串常量的存储方式: 5. 符号常量 以标识符来代表的常量 事先编译预处理命令define定义 编译时先由系统替换为它所代表的常量,再进行编译 例如: 5. 符号常量 main( ) { float a,b; a= 2*3.14 *2.5; b=3.14*2.5*2.5; printf("a=%f, b=%f\n",a,b); } 2.2.2 变量 1. 变量的有关概念 在程序运行过程中,其值改变的数据,称为变量,变量用标识符表示,称为变量名。 变量必须“先定义后使用” 系统为变量分配存储单元,存储变量的值。 编写程序时通过变量名来存、取变量值。 2. 变量定义 变量定义的一般格式: 数据类型说明符 变量列表; 例如:int i, j; long k, m;