
C语言系列文章目录第一章 C语言核心语法一第二章 C语言核心语法二文章目录C语言系列文章目录前言***本文不涉及抄袭或用以任何商业用途本人也遵守本站一切相关规定如有侵犯版权与个人知识产权请及时联系删除该系列文章仅用于个人学习的记录和参考以及分享知识*** 本文中图片引用均出自黑马程序员视频课程感兴趣的小伙伴可以自行学习一、算数运算符1.转换与注意事项2.加减乘除取余二、自增自减运算符三、赋值运算符四、关系运算符五、逻辑运算符六、三元运算符七、逗号运算符分隔符总结前言本文不涉及抄袭或用以任何商业用途本人也遵守本站一切相关规定如有侵犯版权与个人知识产权请及时联系删除该系列文章仅用于个人学习的记录和参考以及分享知识本文中图片引用均出自黑马程序员视频课程感兴趣的小伙伴可以自行学习一、算数运算符1.转换与注意事项在计算中存在隐式转换和强制转换这是因为计算机需要保障其数据类型一致才可以计算得出结果。隐式转换在不同数据类型计算赋值的时候会自动触发面对小的数据类型扩展为大的数据类型例如int和double进行计算其结果会是double类型因为int是取值范围小的数据类型故被转换。而short char类型则会在运算的时候先提升为int类型再计算强制转换是面对大的数据类型缩小为小的数据类型时手动触发的格式目标数据类型 变量名 目标数据类型被强转的数据int b 65536;short i (short)b;//隐式转换short类型的数据在参与计算时候提升为intshorts110;shorts220;//强制转换将其变成int类型的数据结果再转换为short并打印shortresult(short)(s1s2);printf(%d\n,result);而当字符与数字转换的时候会查询ASCII码表//字符转数字//aAoprintf(%d\n,a);printf(%d\n,A);printf(%d\n,0);charc97;printf(%d\n,c);//97printf(%c\n,c);//a2.加减乘除取余这是基本的算数运算符类型// -数字直接进行计算printf(%d\n,34);printf(%d\n,3-4);printf(%d\n,3*4);printf(%.2lf\n,1.11.01);printf(%.21f\n,1.1-1.01);printf(%.2lf\n,1.1*1.01);inta1;intb2;printf(%d\n,ab);//除法(/)printf(%d\n,10/2);// 5//取余(%)printf(%d\n,10%2);// 0printf(%d\n,10%3);// 1// 通用细节//1.整数计算结果一定是个整数printf(%d\n,32);// 5printf(%d\n,10/3);// 3//2.小数计算结果一定是个小数printf(%1f\n,10.13.0);//3.整数和小数计算结果一定是个小数printf(%1f\n,10/3.0);//4.小数直接参与计算其结果是可能不精确printf(%1f\n,3.3333333333333336.666666666666666);printf(%1f\n,10.0/3.0);// 除法的细节// 1.不能除以e// printf(%d\n, 10 / θ);// 取余的细节//1.运算的数据必须全部都是整数printf(%d\n,10%3);//2.获取余数的正负是跟第一个数字保持一致的printf(%d\n,10%3);// 1printf(%d\n,-10%3);// -1printf(%d\n,10%-3);// 1// 3.不能除以0也不允许对0取余注意/和%的区别两个数据做除法/取结果的商%取结果的余数。而整数计算只能得到整数要想得到小数必须有小数参与运算。同时数据类型一致则直接计算不一致则需要转换。二、自增自减运算符自增和自减运算符的作用如下所示也就是说可以有a和a有a–和–a那么这又有什么不同呢显然在一行代码里单独出现结果是相同的但如果组合起来就不一样了首先a是先用后加的加号在后面方便记忆。a是先加后用的加号在前面。这在代码里就体现在inta10intba;intca;b如果打印会发现是10c如果打印会发现是12,因为上面的a已经加1了这次又加1就是12了好那么再看一道题inti10;intj5;intkii---j-i--;printf(%d\n,k);是的Windows和Linux的方式优先级其实不同在我们的学习中以Windows为准哦。inta10;intk1aa;//101020//a12intk2aa;//141428//a 14intk3aa;//15 15 30//a 16intk4aa;//171734printf(%d\n,k1);//20printf(%d\n,k2);//28printf(%d\n,k3);//30printf(%d\n,k4);//34三、赋值运算符例如a b就等同于是 a a b了四、关系运算符注意切记不可这样表达式子即(100 a 0);这是错的而是应当选择(100 a) (a 0);关系运算符不可以在一个式子里出现两个。五、逻辑运算符也就是说是条件都满足才为真||有一个满足就为真而就是反过来而已//1成立 0:不成立//与并且而且//计算规则只有两边都成立那么最终的结果才是成立的只要有一个不成立最终的结果都是不成立的printf(%d\n,11);// 1printf(%d\n,00);// 0printf(%d\n,10);// 0printf(%d\n,01);// 0printf(---------\n);// |或或者//计算规则两边都不成立那么最终的结果才是不成立的只要有一个成立的最终的结果就是成立的。printf(%d\n,1||1);// 1printf(%d\n,0||0);// 0printf(%d\n,1||0);// 1printf(%d\n,0||1);// 1printf(---------\n);//取反//细节实际开发当中最多只用一个printf(%d\n,!1);// θprintf(%d\n,!0);// 1return0;须知逻辑运算符带有短路效果这是为了节省机能做出的优化策略例如inta0;printf(%d,a1a3);显然a不大于1故为假(0)a小于等于3故为真(0)与操作会为0但是与操作只有都是1才会为1左面已经知道为0了那再算右面还有意义吗显然没有直接得到与操作为0。这就是短路效果右面不再参与计算或操作也一样。六、三元运算符示例// 三元运算符、三元表达式、问号冒号运算符//格式//关系表达式表达式1表达式2//获取两个变量中的较大值inta10;intb20;intcab?a:b;printf(%d\n,c);printf(%d\n,ab?a:b);a如果大于b则ca否则cb问号之前是条件判定问号之后是两个选项为真则第一个冒号之前为假则第二个冒号之后。可如果是多个问号多个冒号的题目该如何解答示例如下//练习2inta3,b2,c1;intmaxab?ac?a:c:bc?b:c;printf(max %d\n,max);寻找第一个问号然后往后找是否有第二个问号如果没有则正常求解如果有第二个问号则继续找看看是否有第三个第四个问号。这里我们假设只有两个问号往后找发现了第一个冒号和第二个冒号说明没有问号了也就是判断条件就两个则最先出现的问号和最后出现的冒号做匹配最后出现的问号和最先出现的冒号做匹配。这就像括号一样我们可以把问号看成左括号冒号看成有括号一一对应inta3,b2,c1;intmaxb?(ac?:c):(bc?b:c);printf(max %d\n,max);// 3a大于b故选择(a c ? a : c)再做判断然后再从括号里可得应该选择a也就是3了。intx10;inty20;intz30;inth40;intw50;intnumberxh?zw?xz?xy?x:y:z:w:wh?w:h;//像刚才一样视作括号一样分割就会得到intnumberxh?(zw?(xz?(xy?x:y):z):w):(wh?w:h);printf(%d\n,number);请读者务必自行推导一次七、逗号运算符分隔符运行规则是1从左到右2.最后一个子表达式的结果是整个表达式的结果3.优先级最低永远是最后执行示例//逗号运算符 (分隔符)inti;printf(%d\n,i3,i,i,i5));总结以上就是今天要讲的内容本文学习了C语言的运算符相关内容具体练习和讲解应当选择观看黑马程序员C语言教程。特在此说明。