目录
1.转义字符
2.隐式类型转换
2.1 强制类型转换
2.2 不同类型间赋值
3.运算符 表达式
3.1 算术运算符
3.2 算术运算优先级
3.3 赋值运算
3.3.1 不同类型间混合赋值
3.4 逗号运算
4.生成随机数
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;
}
运行结果: