1. 变量赋值
1、初始化 :在定义的是时候直接赋值,如 :int a = 20;
2、赋值 : 先定义,在赋值,如: int a; a = 20;
c语言中初始化和赋值是不同的;
2. 运算符
运算符和结合性
1.算术运算符
如果参加+、一、*、/运算的两个数中有一个数为实数或双精度数,则结果是 double型,因为所有实数都按 double 型进行运算。
c语言中任何表达式都有数据类型。
/ :除法运算符 ,需要说明,两个整数相除的结果为整数,如5/3的结果值为1,舍去小数部分。
分母不能为0,为0会导致程序崩溃。
% :求余运算符 ,要求左右两个运算符必须是整形或与整形相兼容。
求余表达式的结果的符号与左操作数的的符号有关,与右操作数的符号无关。
求余表达式的结果一定小于右操作数。
编译器只做类型检查。
形参和实参,个数相等,类型匹配。
在运行时,表达式代表的是临时变量(匿名变量)。
练习 :从0到99中任意抽取10个数
算术表达式
自增运算符和自减运算符只能用于变量,而不能用于常量和表达式
++i :先加再用 运行时,效率更高。
i++ (临时变量) :先用再加
结合方向:自右向左;
left value :左值 能放到赋值运算符的左边(变量) 能取地址
right value : 右值 能放到赋值运算符的右边 (常量) 不能自增或自减 不能取地址
所有的匿名变量都是右值
自减运算符和自增运算符相同。
3.各类数值型数据间的混合运算
图 中横向向左的箭头表示必定的转换,纵向的箭头表示当运算对象为不同类型时转换的方向。
注意:箭头方向只表示数据类型级别的高低,由低向高转换。
强制类型转换运算符
可以利用强制类型转换运算符将一个表达式转换成所需类型。其一般形式为
(类型名)(表达式),如:
(double)a : 将a转换成 double类型);
需要说明的是,在强制类型转换时,得到一个所需类型的中间变量,原来变量的类型未发生变化。
如果已定义x为 float型,进行强制类型运算后得到一个int 型的中间变量,它的值等于x的整数部分,而x的类型不变(仍为float 型)。
4.赋值运算符和赋值表达式
1.赋值运算符
赋值符号“=”就是赋值运算符,它的作用是将一个数据赋值给一个变量。
2.类型转换
1.将浮点型数据赋值给整形变量时,舍弃浮点数的小数部分,称为小数部分截断。
2.将整形数据赋值给浮点型变量时,数值不变,但以浮点数的形式存放进变量中。
3.将整形数据赋值给短整型变量时,会出现高位截断。
4.将短整型数据赋值给整型变量时,会发生符号位扩展。如果短整型数据为正,则在整型的高位补0,如果短整型数据为负,则在整型的高位补F.
5.将unsigned short 型数据赋值给整型变量时,不会发生符号位扩展,只需将高位补0即可。
3.赋值表达式
由赋值运算符将一个变量和一个表达式连接起来的式子称为“赋值表达式”。它的般形式为
<变量><赋值运算符><表达式>
5.逗号运算符和逗号表达式
1.逗号运算符
C语言提供一种特殊的运算符,用它将两个表达式连接起来,又称为“顺序求值运算符”。
2.逗号表达式
逗号表达式的一般形式为表达式1,表达式2
逗号表达式的求解过程是:先求解表达式1,再求解表达式2。整个逗号表达式的值是表达式2的值
注意,并不是任何地方出现的逗号都是作为逗号运算符。如:
printf("%d,%d,%d",a,b,c);
其中的“a,b,c”并不是一个逗号表达式,它是printf函数的3个参数。