C语言学习3运算符

上传人:zw****58 文档编号:43491865 上传时间:2018-06-06 格式:DOCX 页数:4 大小:36.80KB
返回 下载 相关 举报
C语言学习3运算符_第1页
第1页 / 共4页
C语言学习3运算符_第2页
第2页 / 共4页
C语言学习3运算符_第3页
第3页 / 共4页
C语言学习3运算符_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《C语言学习3运算符》由会员分享,可在线阅读,更多相关《C语言学习3运算符(4页珍藏版)》请在金锄头文库上搜索。

1、C 语言学习 3运算符3.1:C 语言中的运算符就是我们平时所说的加减乘除等,那么在 C 语言中,它们有着怎样的先后顺序呢,看表 31:运算符结合性()从左到右+-(一元运算符)从右到左*/从左到右+-(二元运算符)从左到右=从右到左表 31:常用运算符及优先级 当两个运算符共享一个操作数时,具有较高优先级的运算符先被运算。如果运算符有 相同的优先级,结合性(从左到右还是从右到左)决定了哪个运算符先被应用。 例如:y =2*6/3;*和/共享了操作数 6,而*和/又着同样的优先级,所以由结合性(从左 到右)来决定运算顺序,即先算*再算除。 我们再来看个简单的额难问题(这不是病句哦) ,y =2

2、*3+6*7,表达式中的加号分别于 两个乘号共用了操作数 3 和 6,有优先级可知先,3 先与第一个乘号结合,6 与第二个乘号 结合。但问题是,计算机先计算 2*3 还是先计算 6*7 呢?您可能说,明显是从左到右嘛, 这只是我们平时计算的习惯,计算机是不确定的,因为结合性(从左到右还是从右到左) 只适用于同等优先级的运算符共享同一个操作数。幸运的是,计算机不管先计算 2*3 还是 先计算 6*7,结果是一样的,只是随着硬件的不同,计算的速度不同而已。3.23.2:下面我们再来看下取模运算符:下面我们再来看下取模运算符:% %取模运算符用于整数运算,取模运算符就是求两个整数相除的余数。例如:1

3、1%5 的结 果是 1、3%2 的结果是 1.对于两个整数取模很容易计算和理解,那么负数的取模运算按照 什么规则呢?C99 规定了,第一个操作数是负数,那么模也是负数,如果第一个操作数是 正数,那么模也是正数。例如:11%5 的结果是 1、11%-2 的结果是 1、-11%-5 的结果是- 1、11%-5 的结果是 1。3.33.3:增量和减量运算符:增量和减量运算符:+ - - - -这两运算符算是比较难的了,记得大学里老师讲的也云里雾里的。下面我们看程序 3.1 /*函数名:main 输入参数:无 输出参数:无 调用函数: printf() 被调用:无 功能:验证运算符+和- - */ #

4、include void main(void) int i_num = 0;int i_width = 0;i_num+;+i_width;printf(“i_num =%d,i_width =%dn“,i_num,i_width); 程序 3.1:+num 与 num+的区别 上面的程序运行完 i_num 和 i_width 分别是多少呢?看看下面的运行结果:当时看到这个结果,我都要哭了,因为,大学老师讲+在变量的前面与后面是不一样 的,结果我反复的翻阅资料终于找到了原因!当单独使用这些增量运算符时(例如 i_num+) ,那么+放在变量的前后是一样的,也就是说+num 与 num+的结果是

5、一样的, 当该运算符及其操作数是一个更大的表达式的一部分时(例如:width =num+与 width =+num) ,两种情况就不一样了。下面我看程序 3.2 /*函数名:main 输入参数:无 输出参数:无 调用函数: printf() 被调用:无 功能:验证运算符+和- - */ #include void main(void) int i_num = 0;int i_width = 0;int m,n;m = i_num+;n = +i_width;printf(“m =%d,n =%d,i_num=%d,i_width=%dn“,m,n,i_num,i_width); 程序 3.2:

6、+num 与 num+的区别 我们用上面的结论来看看程序 3.2 运行完 m,n,i_num,i_width 的值分别是多少。“m = i_num+;”该语句是将 i_num 先赋值给 m,然后自己再自加,所以 m=0, i_num=1;“n = +i_width;该语句是将 i_width 先自加 1 再将自加后的值赋给 n,所以 n =1, i_width =1.下面让我们看看运行的结果是否如此:一句话总结,当 n+是表达式的一部分时,先使用 n 然后将它的值加 1;+n 则是先加 一再使用加完后的 n. 下面提出一个问题: x=2; y=3;x*y+与 x*+y 的值分别是多少? +的优

7、先级仅低于() ,所以 x*y+可写成 x*(y+) ,其结果自然是 2*3=6.后面一个就 由您来验证吧。 自减运算符与自增运算符是一个道理,这里就不详细讲解了。 看了自增运算符时,您可能觉的这挺酷的,想尽快运用的程序里。但在您使用之前, 我还需要提出几点要注意的地方,减少您以后使用中遇到的麻烦。 注意点 1:如果一个变量出现在同一个函数的多个参数中时,不要使用自增运算符。 例如:假设 num 的初始值是 1 那么 printf(“%10d %10dn”,num,num*num+)打印出的结 果是什么呢?这是不确定的,因为 printf()获取要打印的值时,它可能先计算第二个参数, 也就是说

8、 num 先自加,那么结果是绿色的 num 是 1、橙色和红色的的 num 是 2,也就是 说打印出的结果是 2、2.而如果 printf()先计算的是第一个参数,那么结果又是另一个情 况了。 注意点 2:当一个变量多次出现在一个表达式里时,不要使用自增运算符。 例如:假设 num 的初始值是 3,那么 ans =num/2 +5*(1+num+)的结果是多少呢?您可 能认为表达式的运算顺序是从左到右,但实际情况是不确定的。有可能是先算(1+num+), 那么这将导致 num/2 中的 num 变成 4.所以防止因系统不同而出现没必要的麻烦,建议您 还是不要用这样的表达式。3.43.4:类型转

9、换:类型转换有些时候在一个表达式中会出现多种类型的数据,计算机时无法直接计算不同类型的 数据的,所以计算机遇到不同类型的数据运算时会自动将数据进行类型转换,那么就得有 一个统一的转换规则,下面我们具体看看这些转换的规则: 1:当出现在表达式里时,有符号和无符号的 char 和 short 类型都将自动转换成 int. 2:在包含两种数据类型的任何运算里,两个值都将转换成两种类型中的较高的级别. 3:类型级别从高到低分别是:long double、double、float、unsigned long、long、unsigned int、int. 4:在赋值语句里,计算的结果将被转换成将要赋值的变

10、量的类型。 5:当作为函数的参数传递时,char 和 short 会转换成 int,float 会被转换成 double. 为了您更好的理解,下面我们借助一段程序来对上面的规则进一步的讲解。 #incldue void main(void) char ch;int I;float f1;f1 = I =ch =C;/*第 9 行*/printf(“ch=%c,i=%d,f1=%2.2fn”,ch,I,f1); /*第 10 行*/ ch = ch + 1; /*第 11 行*/I =f1 + 2*ch; /*第 12 行*/ f1 =2.0*ch +I; /*第 13 行*/ printf(“

11、ch=%c,i=%d,f1=%2.2fn”, ch,I,f1); /*第 14 行*/ ch = 5212205.17; /*第 15 行*/ printf(“Now ch = %c”,ch); 第 9 行和第 10 行, C被作为 1 字节的 ASCII 码存放在 ch 中, C转换成 4 字节的整数, 即 67 存放在 i 中。最后 f1 接受 67 转换成的浮点数,及 67.00. 第 11 行和第 14 行, C先转换成整数再与 1 相加,结果的 4 字节数据被截成 1 字节放 在 ch 中。 第 12 行和第 14 行,为了和 2 相乘,ch 转换成 4 字节的整数,计算的结果为了和

12、 f1 相 加,转换成浮点型,相加后的而结果再转换成整型赋值给 i. 第 15 和 16 行,右边的浮点数会被截成一个字节。然后赋值给 ch,这便导致实际赋给 ch 的值可能与你想赋的值不相等,所以不要使用降级的赋值语句。 虽然计算机会自动转换数据的类型,但未了出现像降级转换等的错误以及加深对程序 中变量类型的理解,我们应该自己来规定数据的类型。这便用到指派运算符,指派运算符,其格式是圆 括号里面放上需要指派的数据类型。比较下面两个语句: Int mice =1.6 +1.7; Int mice =(int)1.6 +(int 1.7)第一个语句是 1.6 与 1.7 以 double 的格式相加,结果以整数的类型赋给 mice,其值为 3. 第二个语句是 1.6 转换成整数 1,1.7 转换成整数 1,相加后赋给 mice,所以结果是 2. 看了上面的的比较我们发现,数据类型的不同,运算结果可能会出现不同,所以要在 正确的使用数据的类型。 才疏学浅,还望指教。 欢迎大家加入单片机与 C 语言交流群:325011683

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号