一、运算符
自变运算符:++/-- 使变量自己的值自动加1或减1
前自变:++num 立即生效
后自变:num++ 下一条语句才生效
注意:不要再一行代码中多次使用自变运算符
算术运算符:+ - * / %
整数/整数 结果不会有小数部分,肢解去掉小数部分
/ % 除数不能为零,否则会出现“浮点数例外(核心已转储)”
关系运算符:> < >= <= == !=
比较的结果只有 0 或者 1,比较后的结果可以继续参与运算
int n = 5;
1 <= n <= 100 结果永远为真,与数学的运算规则不同
注意:== 尽量把常量值放在左边,预防少写一个 = 出现错误
逻辑运算符:&& || !
会先把运算的对象转换成逻辑值,0转换为假,非0值转换为真
A && B 一假即假
A || B 一真即真
!A 求反
&& || 的短路特性:
当表达式前面可以确定整个表达式的结果,后面的内容就不执行
三目运算符: 运算对象有三个部分
A ? B : C
判断A的值如果为真则执行B,否则执行C
注意:不要使用三目运算符作为流程控制语句,因为这是个运算符,它应该时作为运算结果存在
赋值运算符: = += -= *= /= ...
a += b; a = a + b;
位运算符: & | ~ ^ << >>
二、类型转换
只有相同类型的数据才能进行运算,不同类型的数据需要转换成相同类型后才能进行运算
自动类型转换:(以不丢失数据为基础,可以适当的牺牲一些空间)
1、字节少的向字节多的转
2、有符号的向无符号的转
3、整形向浮点型转
注意:char\short 类型如果与char\short进行运算,编译器会进行类型提升,全部自动提升为signed int再进行运算
强制类型转换:
(转后的类型名)数据
强转会有丢失数据的风险,慎重使用
三、分支语句
if(表达式) // 单分支
{
// 表达式的值为真,执行此处代码
}
if(表达式) // 双分支
{
// 表达式的值为真,执行此处代码
}
else
{
// 表达式的值为假,执行此处代码
}
if(表达式1) // 多分支
{
// 表达式的值为真,执行此处代码
}
else if(表达式2)
{
}
else if(表达式3)
{
// 表达式的值为真,执行此处代码
}
else
{
// 表达式的值为真,执行此处代码
}
练习1:输入三个整数,从小到大显示
开关语句
switch(n) //n可以是数值、表达式,但结果必须是整数
{
case val1: //val必须是常量
... //当val 等于 n时则打开执行开关
break; //在语句结束后,使用break关闭执行开关
//swicth 不能与continue配合
case val2:
...
default: // 如果所有的case都没有匹配成功,则最后会打开default开关,而且可以在switch中的任何位置,都会最后执行
}
注意:
如果是表示[n,m]范围可以是
case n ... m:
但是这是GNU编译器的特有语法,谨慎使用
联系4:输入一个月份,请判断季节
练习5:输入一个月分,判断该月有多少天,忽略润平年