一、转义字符及其作用
反斜杠"\"后面的字符转换成另外的意义。
二、字符型常量
- ‘A'
- '\101'--------------------转义八进制 //相当于char ch=0101
- '\X41'----------------------转义十六进制 //相当于char ch=0x41
三、各类数值型数据之间的混合运算
1、转换规则:
- 在进行运算时,不同类型的数据要先转换成同一类型,然后进行运算。转换的规则如图所示。
从右向左 必转
从下向上 低精度 和 高精度 混合运算时,低精度往高精度转(可跳级转换)
四、算数运算符与算数表达式
1、运算符和结合性
优先级高 并不一定决定先算,但是一定是先结合 。
单双目指的是运算的对象的个数。
2、强制类型转换运算符
1、(类型名) 运算数
(double)a ------(将 a转换成double类型);
(int)(x+y)--------- (将 x+y 的值转换成整型) ;
(类型名)(表达式) 注意,表达式应该用括号括起来。如果写成 (int)x+y 则只将 x转换成整型,然后与 y相加。
注意:在强制类型转换时,得到一个所需类型的中间变量,原来变量的类型 未发生变化。
3、自增自减运算符
1、
++ --- 自增 表示一次增加1
int a = 1;
a++ //后置加加 --- 先用(表达式的结果) 后加(让i自增)
++a //前置加加 --- 先加(让i自增) 后用(表达式的结果)
2、
-- 自减 表示一次减少1
int a=1;
a-- // 先用(表达式的结果)后减(让i自减)
--a //先减(让i自减) 后用(表达式的结果)
3、注意事项
- 自增运算符(++)和自减运算符( - - )只能用于变量,而不能用于常量或表达式,如 5++或(a+b) ++都是不合法的。
- ++和--的结合方向是“自右至左“。
- . a++ ++a如果单独使用,效果上没有区别,先用后加 或 先加后用,是参与到别的运算中时,才发挥作用。
- 浮点类型也可以自增自减。
4、赋值表达式
1、左值
int a=10
- 能放在左边的值,称为左值(变量)。
- 左值能够取地址,即可定位。
2、右值
int a=10;int a=b+c;
- 能放在右边的值,成为右值(常量或者表达式)
- 右值不能够取地址,即不可定位。
注意:
如“a=5”是一个赋值表达式。
对赋值表达式求解的过程是:先求赋值运算符右侧的“表达式”的值,然后赋给赋值运算符左侧的变量。一个表达式应该有一个值,例如,赋值表达式“a=3x5”的值为 15,执行表达式后,变量a的值也是 15。赋值运算符左侧的标识符称为“左值”(left value,简写为lvalue)。并不是任何对象都可以作为左值的,变量可以作为左值,而表达式 a+b就不能作为左值,常变量也不能作为左值,因为常变量不能被赋值。出现在赋值运算符右侧的表达式称为“右值”(right value,简写为 rvalue)。显然左值也可以出现在赋值运算符右侧,因而凡是左值都可以作为右值。例如:
int a=3,b,c;
b=a; /*b是左值 */
c=b; /*b也是右值 */
5、算数表达式
1、定义
用算术运算符和括号将运算对象(也称操作数)连接起来的、符合C语法规则的式子,称为 C算术表达式。运算对象包括常量、变量、函数等。
简言之就是,由运算符和运算数构成的字符序列,例如:a* b/c-1.5+'a'
注意: 表达式都是有值的 ,表达式都是有类型的 。
五、赋值运算符与赋值表达式
1、赋值运算符
赋值符号"="就是赋值运算符,它的作用是将一个数据赋给一个变量。如"a=3"的 作用是执行一次赋值操作(或称赋值运算)。把常量3赋给变量a。也可以将一个表达式 的值赋给一个变量。
2、类型转换
如果赋值运算符两侧的类型不一致,但都是数值型或字符型时,在赋值时要进行类型转换。
- 高精度 => 低精度
double/float => 整型 ==> 精度丢失
- 低精度 => 高精度 ==>补小数,数值不改变。
- 长类型=>短类型 //高位截断
//int => short
//long => int
//short => char
- 短类型=>长类型
无符号短类型 =>长类型 //高位补0
有符号短类型 =>长类型 //符号位扩展 (高位补符号位)
3、复合赋值运算符
在赋值符"="之前加上其他运算符,可以构成复合的运算符。如果在"="前加一 个“十”运算符就成了复合运算符“十="。例如,可以有: a+=3 ,等价于 a=a+3。
六、逗号运算及逗号表达式
逗号表达式,又称为“顺序求值运算符”。
一般形式为: 表达式1,表达式2,表达式3
"(a,b,c)"是一个逗号表达式,它的值等于 c 的值。括号内的逗号不是参数间的分隔 符,而是逗号运算符。括号中的内容是一个整体,作为 print£ 函数的一个参数
补充
num%100 //0~99 随机输出后50个数
int rand(void);
void srand(unsigned int seed); //函数原型 ---
//void --- 这个函数 返回值的类型
//srand --- 函数名字
//unsigned int seed --- 形式参数 //变量 --- 形参
srand(5); //5 实际参数 ---实参
rand(); //seed = 1 ---> 一系列的随机数 0 ~ RAND_MAX
seed = 2 //rand ---新的一系列的随机数
time_t time(time_t *tloc); //时间秒数
time(NULL);//返回值就是获的到的秒数