数据有不同的类型,不同类型数据之间进行混合运算时必然涉及到类型的转换问题。
转换的方法有两种:
自动转换:遵循一定的规则,由编译系统自动完成
强类型转换:把表达式的运算结果强制转换成所需的数据类型
1.1自动类型转换
①占用内存字节数少(值域小)的类型,向占用内存字节数多(值域大)的类型转换,以保证精度不降低。
②转换方向
注意:①无符号和有符号参加运算, 会将有符号转换为无符号
②int 和 double参加运算,会将int转换为double类型
③char 和short类型,只要参加运算,都会转换为int类型。
1.2强制类型转换
格式:(类型说明符)(表达式)
功能:把表达式的运算结果强制转换成类型说明符所表示的类型。
例如:
(int)p+1 对p强转成int类型,然后再+1
(int)(p+1) 对p+1强转成int类型
自动类型转换、强制类型转换都是临时的。
😃
float f=3.14f;
int x =0;
x =(int)f;
cout<<"x="<<x<<",f="<<f<<endl; //x=3,f=3.14
2 运算符
用算术运算符将运算对象(也称操作数))连接起来的,符合C++语法规则的式子,称为C++算术表达式。运算对象包括常量、变量、函数返回值等。
如果运算符需要一个运算对象就叫单目运算符
如果运算符需要两个运算对象就叫双目运算符
如果运算符需要三个运算对象就叫三目运算符
如果运算符需要多个运算对象就叫多目运算符
3 算数运算符
3.1 /的取整和除法运算
5/3==1 5/2==2 //如果/的全部运算对象都是整数,/的功能就是取整
5/2.5==2.5 //如果/有一个运算对象是实型 /的功能就是除法
3.2 %取余运算符
案例一:键盘输入一个整数 判断能否被3整除
int data =0;
//获取键盘输入
cout<<"请输入一个整数:";
cin>>data;
//判断能否被三整除
if(data%3==0)
{
cout<<data<<"被三整除"<<endl;
}
else
{
cout<<data<<"不被三整除"<<endl;
}
案例二:如果rand()函数产生一个随机数>0,请使用rand()产生60-100的随机数
rand()%41+60;
案例三:如果rand()函数产生一个随机数>0,请使用rand()产生'a'-'z'的随机字母
rand()%26+'a';
4 复合运算符
int a=12;
a+=a-=a*=a; //从右向左计算
5 逻辑运算符
注意:
&&:如果A为假,整个表达式为假,那么B的真假决定不了整个表达式的结果,所以不会再判断B的真假,就叫""短路特性";
||:如果A为真整个表达式为真,那么B的真假决定不了整个表达式的结果,所以不会再判断B的真假,就叫""短路特性"
在C++中,除了0为假 其他都为真
!10 ==0 !-10==0 !0==1