一,运算符 自变运算符: ++/– 使变量的值自动加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的整数倍 关系运算符: > < >= <= == != 比较结果0(不成立)或1(成立),比较结果可以继续参与后续的运算 int n = -100;
if(10 < n < 100)
结果永远为真,与数学运算规则不同 注意:== 建议常量放左边 逻辑运算符: && || ! 先把运算对象转换成逻辑值,0转换为假,非零转换真 A && B 一假即假 A || B 一真即真 !A 求反 && || 短路特性: 当左边部分的值可以确定整个表达式的结果时,右边部分就不执行计算
什么意思?
其实就是 xxx && xxx 当左边表达式为假(0),右边直接被短路,若有运算则不参与运算
同理 xxx || xxx 当左边表达式为真(1),右边直接被短路,若有运算则不参与运算
eg:
int a, b, c;
a=b=c=0;
a++ && b++ || c++;
printf(“%d, %d, %d”, a, b, c);
输出什么? —->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: 可以表示[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:这个语句内的内容哦
可以去试一试。
1.本站内容仅供参考,不作为任何法律依据。用户在使用本站内容时,应自行判断其真实性、准确性和完整性,并承担相应风险。
2.本站部分内容来源于互联网,仅用于交流学习研究知识,若侵犯了您的合法权益,请及时邮件或站内私信与本站联系,我们将尽快予以处理。
3.本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
4.根据《计算机软件保护条例》第十七条规定“为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。”您需知晓本站所有内容资源均来源于网络,仅供用户交流学习与研究使用,版权归属原版权方所有,版权争议与本站无关,用户本人下载后不能用作商业或非法用途,需在24个小时之内从您的电脑中彻底删除上述内容,否则后果均由用户承担责任;如果您访问和下载此文件,表示您同意只将此文件用于参考、学习而非其他用途,否则一切后果请您自行承担,如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
5.本站是非经营性个人站点,所有软件信息均来自网络,所有资源仅供学习参考研究目的,并不贩卖软件,不存在任何商业目的及用途
暂无评论内容