运算符,选择语句
一,运算符 自变运算符: ++/-- 使变量的值主动加1大概减1 前自变:++num/--num 立即生效 后自变:num++/num-- 下一行语句才有用 留意:不要在一行代码中多次使用自变运算符 * ++ -i 这样对吗? 这样不对 在这里-i是表达式,自增自减只能针对一个变量举行运算! -i++ 这样可以,此时是先 i++ 再取负值哦! 算术运算符: + - * / % 整数/整数 效果还是整数,没有小数点,只保存整数部分 10/3 -> 3 10%3 -> 1 / % 除数不能为0,否则就会浮点数例外、(核心已转储),这是个运行报错,一旦产生程序立即克制,背面不再执行 注: 2%5 -2%5 2%-5 -2%-5 他们输出效果各是什么呢? 应该是 2 -2 2 -2 %它的效果以被取余的为基准即2,-2,2,-2 还有: printf("%lf", 5.0%2); 这是什么? 这样会报错 5.0%2中 %要求是整型且输出符号由被取余来决定 什么意思? 就是 printf("%ld", (long)5.0%2); 这样是对的而 printf("%d", (long)5.0%2); 这样能输出但是会警告; 若a % b == 0,阐明a是b的整数倍 关系运算符: > = a++ 为0,b++被短路了,但是c++没有被短路哦,这里要留意 故输出为1,0,1 条件/三目运算符:运算对象有三个部分 A ? B : C 判断A的值假如为真则执行B,否则执行C 赋值运算符 a = 10; a += 10; a=a+10; a -= 10; a *= 10; a /= 10; a %= 10; 位运算符: & | ~ ^ 逗号运算符: *优先级最低 eg:int num = 0, num1=0; num1 = (num=1,2,3);----> 括号中num被赋值为1,逗号优先级最低故num1=3 num=? num1=? 这时num应该等于1,num1等于3 二、分支语句 if(表达式); //单分支 { //表达式为真(非零),则执行此处代码 } if(表达式) //双分支 { //表达式为真(非零),则执行此处代码 } else { //表达式为假(零),则执行此处代码 } if(表达式1) //多分支 { //表达式1为真(非零),则执行此处代码 } else if(表达式2) { //表达式2为真,则执行此处代码 } else if(表达式3) { //表达式3为真,则执行此处代码 } else { //假如以上所有表达式都为假,则末了执行此处代码 }三,类型转换只有相同类型的数据才气运算,假如类型不相同的数据需要先转换相同类型后再举行计算。
主动类型转换:
转换规则:
以不丢失数据为基础,可以适当地牺牲一些空间
1、字节少的向字节多的转
2、有符号的向无符号的转
3、整型向浮点型转
留意:char short假如与不同类型的数据运算时,会先提升为int类型后参与运算
强制类型转换:
(新类型名)数据;
这种方式有大概会丢失数据,慎重使用
四,switch开关分支语句
switch(n) //n可以是数值、表达式,运算效果必须是整数
{
case val: //假如val==n,则打开执行开关
//val必须是整型常量
...
break; //关闭执行开关,结束switch
//假如每个case后都加break,形成了分支结构
//switch中不能使用continue配合
//case a ... b: 可以表现,但是只有GNU编译器才支持该语法,不建议使用
case val1:
...
default:
//假如所有的case都没有打开,则末了打开default,而且放在任何位置都可以末了打开
}
这里有个有趣的征象:
在linux ubuntu16.04
case 要求是常量
const int a=1;
switch(1){
case a:.... }编译会错误的哦
但是在windows vscode-mingw 同样的方式不会报错哦,甚至会执行case a:这个语句内的内容哦
可以去试一试。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]