1.常量和变量:
1.字符串常量:
"ab"
"hello world"
字符串末尾都有一个用来标识字符串结尾的\0字符
'a'和"a"区别:
'a':字符常量,只有一个字符a
"a":字符串常量,有2个字符'a' + '\0'
"ab\0" 4
"ab\\\123ab" 7
2.标识常量
#define N 5
宏只是代码的替换,中间不进行任何数据计算的操作
宏名一般都是大写,用来和变量区分可以小写,但不提倡。
3.变量:
数据类型 变量名;
int Num1;
初始化:定义变量的时候对变量赋初值
赋值:定义变量后,对变量的赋值
初始化 != 赋值
2.类型转换:
1.显示类型转换(强制类型转换)
只会转换一次,不影响后续变量的值。
(int)3.1415;(运算是将3.1415强制转换成整形变量一次)
int Num1;
(double)Num1;
2.隐式类型转换
表达式:一个多个变量和常量组成的式子
表达式一定是个数值,一定有其对应的类型。类型转换的过程中可以理解为低阶向高阶拢。
低精度转换成高精度
浮点型精度 > 整形精度
无符号精度 > 有符号精度
float类型进行数据运算和数据处理时会转换为double类型
short、char类型进行数据运算和数据处理时会转换为int类型
char + char == int
char + short == int
float + float == double
float + double == double
float + int == double
3.运算符:
1.算数运算符:
+
-
*
/ : 不能除以0
% : 取余不能对浮点数操作
++ 自增运算符
-- 自减运算符
i++ 先用再加
++I 先加再用
i--
--i
2.赋值运算符:
=
+=
-=
*=
/=
%=
左值:允许放在赋值运算符左边的值为变量
右值:允许放在赋值运算符右边的值,通常为常量、变量、常量变量组成的表达式
左值为浮点数类型,右值为整形,会将值扩展精度
左值为整数类型,右值为浮点数类型,会舍弃精度
左右两边均为整形:将右值直接拷贝到左值空间中
小数据放入大空间:数据扩展,有符号数高位补符号位,无符号高位补0
大数据放入小空间:直接截取数据低位放入小空间
char ch = 300;
printf("ch = %d\n", ch); //44
char ch = 130;
printf("ch = %d\n", ch); //-126
3.三目运算符(特殊运算符) 表达式 ? 表达式1 : 表达式2 x > y ? x : (y > z ? y : z)
4.逗号运算符
从左到右依次执行表达式,并将最后一个逗号表达式的结果作为整体逗号表达式的结果
eg:a = (1,2,3,3,5); a=5
5.sizeof运算符
sizeof (数据类型/变量名) 获得数据类型/变量在内存中所占的字节数