二、数据类型、运算符与表达式
1.变量和常量的定义与使用方法
(1).常量:值不发生变化的量
字面常量:直接常量(常数)
包括:整型常量>>>>>>>>>12、0
实型常量>>>>>>>>>4.6、1.23
字符常量>>>>>>>>>"a"
符号常量:标识符、符号常量
标识符:程序中使用的各种名称(变量名、数组名、函数名、符号常量名)
标识符由字母、数字和下划线组成的一串符号,但是必须以英文字母或下划线开头。不允许使用关键字作为用户 标识符的名称。
c语言的标识符可分为关键字、预定义标识符、用户标识符
关键字>>>c语言规定的具有固定含义的标识符,也称保留字,均为小写字母int、while
预定义标识符>>>在c语言中有特定的含义,如printf、include
用户标识符>>>由用户根据需要定义的标识符,一般用来给变量、函数、数组等命名
符号常量:也称宏常量,由c语言中的宏定义预处理命令来定义
#define 符号常量 常量
习惯上用大写字母作为符号常量的标识符
(2).变量:值可以变化的量(先定义、后使用)
类型标识符 变量名1,变量名2,.....;
在定义变量的同时也可对变量赋初值>>>>>变量的初始化
变量定义语句可放在函数体内的前部,也可放在函数的外部或复合语句的开头
2.数据类型及其定义方法(基本类型、构造类型、指针类型、空类型)
基本类型:就是最简单的类型:如int 。char、double等。
构造数据类型:构造数据类型是根据已定义的一个或多个数据类型用构造的方法来定义的。一个构造类型的值可以分解成若干个“成员”或“元素”。每个“成员”都是一
基本数据类型或又是一个构造类型。构造类型有以下几种:结构体、共用同、联合体、类等。
指针类型:指针是一种特殊的,同时又是具有重要作用的数据类型。
空类型:即void类型。
3.整型、实型、字符型数据的定义、存储、表示范围及运用
(1).整型数据
定义:整型数据是不包含小数部分的数值型数据,用字母I表示。整型数据只用来表示整数,以二进制形式存储。
存储:以补码形式存储
原码、反码、补码:
(2).实型数据
定义:实型数据也称为浮点数或实数。在C语言中,实数只采用十进制。它有二种形式:十进制小数形式和指数形式。
(十进制小数形式:必须有小数点
指数形式:尾数(可带符号)、阶码标志e或E、阶码(只能为整数,可带符号)>>>0.5E7)
实型变量分为:单精度(float型)>>>>4个字节、双精度(double型)和长双精度(long double型)>>>>8个字节 三类。
存储形式:float型(32位)
符号位 | 指数 | 尾数 | |
---|---|---|---|
正 | 0 | 指数的二进制 | 23位(不够补0) |
负 | 1 | 位+127 | 23位(不够补0) |
double型(64位)
符号位 | 指数 | 尾数 | |
---|---|---|---|
正 | 0 | 指数的二进制 | 55位 |
负 | 1 | 位+127 | 55位 |
(3).字符型数据
定义:字符
字符常量:用单引号括起来的一个字符,如'a'、'w',每个字符常量都占一个字节
只能用单引号括起来,不能用双引号或其他括号
字符常量是单个字符,对大小写敏感,空格也是一个字符
(区别于字符串:"a"、"ac"由双引号括起来)
转义字符:
字符串常量:由一对双引号括起来的字符序列,如"china"
字符串常量的内存字节数等于字符串中字符数+1,增加的一个字节是由系统自动存入的字符'\0',作为字符串结束的标志
字符变量:用于存放单个字符变量,使用关键字char来定义
char optr;
4.变量赋初值
类型说明符 变量1= 值1, 变量2= 值2, ……;
5.不同类型数据间的转换与运算
(1).算术转换
当自动转换用于算术运算时>>>>算术转换
转换原则:自动将精度低、表示范围小的运算对象类型向精度高、表示范围大的运算对象类型转换
char、short>>>>int>>>>unsigned int>>>>long>>>>unsigned long>>>>float>>>>double
(2).赋值转换
在赋值运算中,只有在赋值号右侧表达式的类型与左侧类型完全一样时,才能进行赋值转换(赋值号右边的值不能超过左边变量的数值范围)
6.算术运算符、赋值运算符、逗号运算符及其表达式的运用
(1).算术运算符
基本算术运算符:+、-、*、/(加减乘除)、%(求余)
【+、- >>>>>作单目运算符时表正负号 >>>>>作双目运算符时表加减
% >>>>>运算符两边必须为整型,且所得结果的符号和被除数相同】
算术运算符的优先级:圆括号优先级最高>>>单目运算符>>>双目运算符
对象数 | 优先级 | 名称 | 运算符 | 运算规则 | 运算对象 | 结合性 |
---|---|---|---|---|---|---|
圆括号 | 1 | 圆括号 | () | 括号里优先计算 | 整型或实型 | |
单目 | 2 | 正 | + | 取原值 | 整型或实型 | 自右向左 |
单目 | 2 | 负 | - | 取负值 | 整型或实型 | 自右向左 |
双目 | 3 | 乘 | * | 乘 | 整型或实型 | 自左向右 |
双目 | 3 | 除 | / | 除 | 整型或实型 | 自左向右 |
双目 | 3 | 模 | % | 整数取余 | 整型 | 自左向右 |
双目 | 4 | 加 | + | 加 | 整型或实型 | 自左向右 |
双目 | 4 | 减 | - | 减 | 整型或实型 | 自左向右 |
算术表达式:算术表达式是由常量、变量、函数、圆括号、运算符等组成。一个常量、一个变量(已赋过值)、一个函数都是合法的表达式。
自增、自减运算符 >>>>>单目运算符 >>>>>自右向左结合
i++ >>>先使用再加1 ++i >>>先加1再使用(i--、--i同理)
(2).赋值运算符
“=” >>>赋值运算符,双目运算符,左边必须是变量,右边必须是表达式,具有自右向左的结合性,优先级只高于逗号运算符,比其他任何运算符优先级都低
复合赋值运算符:
对象数 | 名称 | 运算符 | 运算规则 | 运算对象 | 运算结果 |
---|---|---|---|---|---|
双目 | 加赋值 | += | a+=b*3 >>>a=a+(b+3) | 数值型 | 数值型 |
双目 | 减赋值 | -= | 数值型 | 数值型 | |
双目 | 乘赋值 | *= | 数值型 | 数值型 | |
双目 | 除赋值 | /= | 数值型 | 数值型 | |
双目 | 模赋值 | %= | 整型 | 整型 |
赋值表达式:
(3).逗号运算符
表达式1,表达式2,.......
在所有运算符中优先级最低,结合性是从左向右