1. 数据类型转换
1.1 显式类型转换(强制类型转换)
注意:
(int)5.2
舍弃精度变成5
(double)5
扩展精度变成5.0
1.2 隐式类型转换:不同类型进行数据运算和数据处理时会发生隐式类型转换
1. 示意图
double <- float 高精度
unsigned
long
int <- char short 低精度
2. 规则(低精度转成高精度)
1. 同类型:所占空间越大,精度范围越高
2. 无符号精度范围高于有符号类型
3. 浮点数精度范围高于整数类型精度范围
2. 表达式
由运算符连接的一个或多个常量和变量组成的式子,表达式有值也有类型
3. 运算符
3.1 算数运算符
+
-
*
/
% 取余(不能对浮点数取余)
++
i++ 先用后加(一个表达式中,先用i,表达式结束再给i+1)
++i 先加后用
--
3.2 赋值运算符 =
1. 左值
允许放在 = 左边的值,只能是变量
2. 右值
允许放在 = 右边的值, 可以是常量、变量或者表达式
3. 大、小数据的赋值存放规则
1. 大数据存入小空间
高位截断,截取数据低位存入小空间(可能正数变成负数,也可能负数变成正数)
2. 小数据存入大空间
存入大空间数据低位,有符号数在高位补符号位(0/1),无符号在高数据位补0
4. 左右值类型不同的数据存储方法(将右值数据类型变换为左值数据类型)
1. 左值为浮点数类型,右值为整数类型:
将整数类型转换为浮点数类型赋值
2. 左值为整数类型,右值为浮点数类型
会将浮点数类型舍弃精度赋值给整数类型
3. 如果左值和右值空间大小一样,会将右值直接拷贝到左值空间中
3.3 逗号运算符
从左到右依次计算,将最后一个表达式的结果最为整体的结果
c = (a + 1, b + 2, a++, b++, a + 2, b + 3);
3.4 sizeof运算符
获取某种数据类型或者变量在内存中所占的字节数
sizeof(int);
int val = 0;
sizeof(val);
4. 输入输出函数
4.1 putchar(输出单个字符)
putchar('a');
int ch = 'a'; putchar(ch);
putchar(97);
4.2 getchar (接收单个字符)
char ch = 0;
ch = getchar();
4.3 printf
1. 打印非输出控制符
printf("hello world");
转义字符合集
\" "
\\ \
\n 换行
\t 横向制表符(tab键)
\v 纵向制表符(tab键)
\b 退格符(覆盖前一个字符)
\r 回车
2. 打印输出控制符
%d 有符号十进制
%ld 有符号十进制(long int)
%u 无符号十进制
%o 无符号八进制
%x 无符号十六进制(小写)
%X 无符号十六进制(大写)
%#o 无符号八进制(带0)
%#x 无符号十六进制(小写带0x)
%e 按照指数形式打印浮点数类型
%E 按照指数形式打印浮点数类型
%s 按字符串打印
%c 打印单个字符
%f 按float型打印
%lf 按double型打印
%p 按指针打印
%%(等价于\%) 打印%
注意:
1. %nd 终端显示域宽为n,右对齐,前面为空格
2. %-nd 终端显示域宽为n,左对齐,后面为空格
3. %0nd 终端显示域宽为n,右对齐,前面补0
4. %.nf 浮点数保留小数点后n位有效数字
3. 打印多个输出控制符
注意:输出控制符的个数与表达式的个数要一一匹配