目录
[2.1 强制类型转换](#2.1 强制类型转换)
[2.2 不同类型间赋值](#2.2 不同类型间赋值)
[3.运算符 表达式](#3.运算符 表达式)
[3.1 算术运算符](#3.1 算术运算符)
[3.2 算术运算优先级](#3.2 算术运算优先级)
[3.3 赋值运算](#3.3 赋值运算)
[3.3.1 不同类型间混合赋值](#3.3.1 不同类型间混合赋值)
[3.4 逗号运算](#3.4 逗号运算)
[5. 每日一练](#5. 每日一练)
1.转义字符
'\n' 表示换行
'\t' 表示调到下一个制表符(一个制表符占8个空格)
'\b' 表示退格
'\r' 回车,光标回到当前行的开头
'\\' 表示打印一个 \
'\'' 表示打印 '
'\''' 表示打印 "
'\101' 表示转义八进制
'\x41' 转义十六进制
2.隐式类型转换
低精度和高精度混合运算时,低精度1往高精度转。
2.1 强制类型转换
(类型)运算数
注:不会影响运算数本身
float a = 12.34;
(int) a
2.2 不同类型间赋值
3.运算符 表达式
3.1 算术运算符
- 、 - 、 * 、/ 、 %
注:
/ (1)两个整数相除,相当于取整的效果
(2)除法运算中除数不能为0
% (1)除数不能为0
(2)运算数必须为整数。
(3)结果的符号取决于做操作数
另:取余运算可用于:判断奇数和偶数(%2 == 1 奇数; %2==0 偶数);取范围(%N 得到0~N-1的数)
++ 自增:表示一次+1;
(1)a++ :后置加加,先用(表达式的结果) 后加(让a自增)
(2)++a :前置加加 ,先加(让a自增) 后用(表达式的结果)
注:a++和++a如果单独使用,效果上没有区别,运算数必须是一个可以修改的变量,浮点类型也可以自增自减。
ps:i++和++i哪个效率高?
答:++i效率更高。
-- 自减:表示一次-1;
3.2 算术运算优先级
3.3 赋值运算
赋值运算符" = ":作用是将一个数据赋给一个变量。
eg:a = 10 结果是a的值,类型为a的类型
注:可以连续赋值 ---- a = b = c = 10
+= 、 -= 、 *= 、 /= 、 %= 也是赋值运算
eg: a += 1 相当于 a = a + 1
3.3.1 不同类型间混合赋值
(1)高精度的值赋给低精度会产生精度丢失。
(2)长类型的值赋给短类型会产生高位截断。
(3)短类型的值赋给长类型
a:无符号短类型赋给长类型------高位补零
b:有符号短类型赋给长类型------符号位扩展(高位补符号位)
3.4 逗号运算
逗号运算为顺序求值运算符
语法:表达式1,表达式2,表达式3...,表达式n
1+2,a++,3+4;
运算过程:从左往右依次运算,结果为整个式子中最后一个表达式的结果。
4.生成随机数
rand();
eg:随机生成10个100以内的数
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main(void)
{
int i = 0;
srand(time(NULL));
for(i = 0;i<10;i++)
{
printf("%d\n",rand()%100);
}
return 0;
}
运行结果:
5. 每日一练
从终端获得两个2位数,
将第一个数个位作为新数的千位,
将第二个数个位作为新数的百位,
将第二个数的十位作为新数的十位
将第一个数的十位作为新数的个位,
打印该新数。
#include<stdio.h>
int main(void)
{
int a,b,c1,c2,c3,c4,num;
printf("Input two num:");
scanf("%d %d",&a,&b);
c1 = a % 10 * 1000;
c2 = b % 10 * 100;
c3 = b / 10 * 10;
c4 = a / 10;
num = c1+c2+c3+c4;
printf("num = %d\n",num);
return 0;
}
运行结果: