本节书摘来自华章出版社《C语言解惑》一 书中的第3章,第3.1节,作者:刘振安 刘燕君,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.1 混合运算要小心

【例3.1】分析下面程序的输出结果。

#include void main()

{

double a=2,b=6;

int c=2,d=6;

printf("%f\n",a/b); //1

printf("%f\n",2/6); //2

printf("%f\n",2./6); //3

printf("%f\n",(double)c/d); //4

printf("%f\n",(double)(c/d)); //5

printf("%f\n",(double)(c/b)); //6

printf("%d\n",2/6); //7

printf("%f\n",c/b); //8

}

第2条语句的“2/6”与第7条语句的“2/6”是一样的,都是两个整数相除,结果为0,只是第2条语句用实数输出,为0.000000,第7条语句用整数输出,为0。第5条输出语句只是将整数“2/6”的结果转换为实数,整数相除的结果为0,当然输出与第2条语句一样。

第6条语句对“c/b”的结果进行转换是多余的,因为“c/b”已经是混合运算,自动实现转换,与第8条语句等效。第3条语句也是实数和整数的混合运算,它们的结果都与第1条语句的结果一样,均输出0.333333。程序的输出为

0.333333

0.000000

0.333333

0.333333

0.000000

0.333333

0

0.333333

整型、单精度、双精度型数据可以混合运算,字符型数据可以与整型数据通用。因此,整型、实型(包括单、双精度)、字符型数据间可以混合运算。在进行运算时,不同类型的数据要先转换成同一类型,然后进行运算。转换规则是:字符型必须先转换为整数,short型转换为int型,float型数据在运算时一律先转换成双精度型;int型与double型数据进行运算,先将int型数据转换成double型,结果为double型;同理,int型与long型数据进行运算,先将int型转换成long型,结果为long 型。

【例3.2】演示字符和整数的运算程序。

#include void main()

{

char a='a'; int i=97;

printf("%c %c %c\n",a,(a+1),(a+2));

printf("%c %c %c\n",i,(i+1),(i+2));

printf("%d %d %d\n",a,(a+1),(a+2));

}

在VC中,第1条语句与下面的语句

printf("%c %c %cn",a,a+1,a+2);

是等效的。之所以不用这种形式,是因为有的C编译器对“a+1”和“ (a+1)”的处理方式不一样,效果也就不一样。根据混合运算规则,可以分析出程序输出的结果如下。

a b c

a b c

97 98 99

【例3.3】分析下面程序中的错误。

#include void main()

{

int a=97; double b=25;

printf("%d\n",a%b);

}

运算符%只适用于整数,需要对b强制转换,即“a%(int)b”,变成97%25=22。

意 不能将形如“b=25”的b误认为整数,它是25.000000,不符合求余的运算要求。

c语言混合运算优先级判断,《C语言解惑》—— 3.1 混合运算要小心相关推荐

  1. c语言符号运算优先级6,c语言运算符号的优先级

    c语言运算符号的优先级 本文来自百度搜索只为查看方便 优先级等级口诀: 圆方括号.箭头一句号, 自增自减非反负.针强地址长度, 乘除,加减,再移位, 小等大等.等等不等, 八位与,七位异,六位或,五与 ...

  2. 为什么c语言乘除法优先级低,C语言训练题.docx

    C语言训练题 C语言训练题1.表达式:(int)((double)9/2)- 9%2 的值是A) 0B) 3C) 4D) 5 参考答案:B[解析]先将整型数据9强制转换成double型,然后除以2得到 ...

  3. c语言的非法字符常量,判断C语言数值常量是否合法?为什么不合法?

    12. 0Xa23 4.5e0,-0xf .5e-3 .177合法. 实数型常量:必须有小数点,例如定义double a=1就是错误的,必须写成double a=1.0,另外写成a=1,0中间是逗号, ...

  4. C语言循环结构素数判断,C语言实验之判断素数(循环结构java)方法讲解

    C语言实验之判断素数(循环结构java)方法讲解 Problem Description 从键盘上输入任意一个正整数,然后判断该数是否为素数. 如果是素数则输出"This is a prim ...

  5. C语言 用空格作判断,C语言菜鸟基础教程之判断

    (一) 先动手编写一个程序: #include int main() { if(1) { printf("The condition is true!\n"); } return ...

  6. c语言中合法转义字符,判断c语言合法转义字符

    满意答案 UniTubeStar 2018.01.11 采纳率:45%    等级:12 已帮助:5850人 单独一个 \ 不是合法转义字符. 转义字符 就是指 反斜杠后面的字符,不按原意 解释,而要 ...

  7. c语言字符串的斜杠判断,C语言的斜杠\和反斜杠/怎么区分啊?

    满意答案 a5521570 推荐于 2018.02.27 采纳率:55%    等级:7 已帮助:758人 区分用2113途,根据用途选用\或者/.二者使用场景不5261同.1 \a) 在字符4102 ...

  8. c语言编程实现密码判断,C语言实现密码判断

    在平时应用中,我们常常会需要对于密码的判断,今天Xushine研究院就给大家带来一段代码,这个代码是可扩展的,可以随意自行添加~ #include #include #include #define ...

  9. 【C语言基础入门】2.C语言中四则运算、关系运算、逻辑运算与位运算

    文章目录 一.概述 二.四则运算(+,-,*,/,%) 三.关系运算(<,>,<=,>=,==,!=) 四.逻辑运算与位运算 五.深度剖析位运算 一.概述 C语言中支持下面4种 ...

  10. c语言运算优先级与结合方向的问题

    c语言运算的结合方向一直困扰我,不过我终于get到了哈哈 先附上c语言运算优先级和结合方向图片 以上有c语言一共的15个优先级,从上往下递增 c语言的运算符号有很多,当我们打代码或者看代码的时候符号多 ...

最新文章

  1. LeetCode简单题之数组的相对排序
  2. Apache Spark 2.2.0 中文文档 翻译活动
  3. 报告视频录制:腾讯会议录屏+人像画中画特效
  4. APP测试入门之性能测试
  5. idea ctrl+shift+f快捷键失效
  6. Spring IOC注解方式
  7. Flutter 以Dialog Activity形式展现
  8. 开启算法编程之旅的准备工作——如何在Windows 上安装 Anaconda 和 PyCharm
  9. linux安装python
  10. Qtcreator配置Ros环境
  11. 深入浅出mysql_深入浅出mysql索引
  12. 第三章(jQuery中的DOM操作)
  13. JavaScript之字符串类型
  14. 算法设计与分析基础第二章部分课后题答案
  15. VSCode配置vue用户代码片段Snippets
  16. 解决EPSON LQ-630k打印机打印方向相反的问题(预览正常打印就不行)
  17. 招商银行笔试题之解码方法
  18. Java图片上传Base64 类型上传 后台转换工具类
  19. Python学习笔记-北京图灵学院-变量-20200528
  20. Jupyter 进行文字、图片格式编辑

热门文章

  1. 正儿八经做MIS系统-1
  2. 计算机打字考试软件使用说明,电脑打字指法练习_学习使用电脑的基本知识打字,需要怎么练习?...
  3. 两台电脑实现串口通信
  4. 集中趋势度量Measures of Central Tendency
  5. A pretty carpet
  6. 非计软专业的学生也能看懂的面向对象编程(《面向对象编程是怎样工作的》平野章/著 读书笔记)
  7. 苹果库乐队怎么玩_学会这个,自己给苹果手机换来电铃声
  8. mysql utf8占几个字节_utf-8的中文是一个字符占几个字节
  9. 暴力破解rar和zip加密压缩包
  10. 【蓝桥杯练习-PWM脉宽调制】