1. #include <stdio.h>
  2. #define SQR(X) X*X
  3.  
  4. int main(int argc, char* argv[])
  5. {
  6. int a = ;
  7. int k = ;
  8. int m = ;
  9.  
  10. printf("SQR(k+m) = %d\n", SQR(k+m)); //SQR(k+m) = 5
  11. printf("SQR(k+m)/SQR(k+m) = %d\n", SQR(k+m)/SQR(k+m)); //SQR(k+m)/SQR(k+m) = 7
  12. printf("SQR(k+m)/SQR(k+m) = %.2f\n", 1.0*SQR(k+m)/SQR(k+m)); //SQR(k+m)/SQR(k+m) = 7.00
  13. printf("SQR(k+m)/SQR(k+m) = %.2f\n", SQR(k+1.0*m)/SQR(k+m)); //SQR(k+m)/SQR(k+m) = 7.50
  14. printf("a/(SQR(k+m)/SQR(k+m)) = %d\n", a/(SQR(k+m)/SQR(k+m))); //a/(SQR(k+m)/SQR(k+m)) = 1
  15. printf("1.0*a/(SQR(k+m)/SQR(k+m)) = %.2f\n",1.0*a/(SQR(k+m)/SQR(k+m)));//1.0*a/(SQR(k+m)/SQR(k+m)) = 1.43
  16.  
  17. return ;
  18. }
  19.  
  20. /*
  21. SQR(k+m) = 5
  22. SQR(k+m)/SQR(k+m) = 7
  23. SQR(k+m)/SQR(k+m) = 7.00
  24. SQR(k+m)/SQR(k+m) = 7.50
  25. a/(SQR(k+m)/SQR(k+m)) = 1
  26. 1.0*a/(SQR(k+m)/SQR(k+m)) = 1.43
  27.  
  28. 以上测试得:
  29. SQR(k+m)/SQR(k+m)表达式展开替换为: 1.0*SQR(k+m)/SQR(k+m)表达式展开替换为:
  30. k+m*k+m/k+m*k+m = 2 + 1*2 +1/2 +1*2 + 1 1.0*k+m*k+m/k+m*k+m = 1.0*2 + 1*2 +1/2 +1*2 + 1
  31. = 2 + 1 + 1/2 + 3 + 1 = 2.0 + 1 + 1/2 + 3 + 1
  32. = 3 + 1/2 + 4 = 2.0 + 1 + 0 + 3 + 1
  33. = 3 + 0 + 4 = 2.0 + 5
  34. =7 = 7.0
  35. 1.0*(SQR(k+m)/SQR(k+m))表达式展开替换为:
  36. = 1.0*(k+m*k+m/k+m*k+m )
  37. = 1.0 * 7
  38. = 7.0
  39. SQR(k+1.0*m)/SQR(k+m) =
  40. = k+1.0*m*k+1.0*m/k+m*k+m
  41. = 2 + 1.0*2 + 1.0/2 + 1*2 + 1
  42. = 2 + 2.0 + 0.5 + 2 + 1
  43. = 2.0 + 2.0 + 0.5 + 2.0 + 1.0
  44. = 7.50
  45. 总结:
  46. define定义的宏变量(以及相应的头文件等),在编译前进行代码替换,注意仅仅是代码替换,并不涉及到运算符等的操作,因为运算符操
  47. 作是在编译阶段进行的
  48. define 只是定义而已,在编择时只是进行简单代换而已,并不经过任何其他的处理(例如:加减等运算或者是附加括号等的结合性干预)
  49. 表达式中的运算是按“块”来分步运算的,各个块中按照块中各成员精度最高者运算并按照最高精度得出结果。
  50.  
  51. */

#define与运算精度问题探究

扩展阅读:C/C++源代码到可执行程序的过程详解

#define与运算精度问题探究的更多相关文章

  1. 关于java中Double类型的运算精度问题

    标题     在Java中实现浮点数的精确计算    AYellow(原作) 修改    关键字     Java 浮点数 精确计算   问题的提出:如果我们编译运行下面这个程序会看到什么?publi ...

  2. 关于java中Double类型的运算精度问题(转)

    Java Java double:浮点数:精确计算  public class Test{    public static void main(String args[]){        Syst ...

  3. JavaScript 浮点数及运算精度调整总结

    JavaScript 浮点数及运算精度调整总结 JavaScript 只有一种数字类型 Number,而且在Javascript中所有的数字都是以IEEE-754标准格式表示的.浮点数的精度问题不是J ...

  4. PHP浮点数运算精度造成的,订单金额支付经常少1分的问题

    最近碰见一个奇怪的问题,商城通过微信支付的订单经常少一分钱,经过排查是PHP浮点运算精度问题造成的 由PHP浮点数运算精度造成的,鸟哥的Bolg有详细的说明.http://www.laruence.c ...

  5. 搞懂js中小数运算精度问题原因及解决办法

    js小数运算会出现精度问题 js number类型 JS 数字类型只有number类型,number类型相当于其他强类型语言中的double类型(双精度浮点型),不区分浮点型和整数型. number类 ...

  6. 简单BigDecimal运算精度

    项目中遇到了数值运算,如网上所写的,一般有这几个方法: /** * 提供精确的加法运算. * @param v1 被加数 * @param v2 加数 * @return 两个参数的和 */ publ ...

  7. JavaScript 浮点数运算 精度问题

    JavaScript小数在做四则运算时,精度会丢失,这会在项目中引起诸多不便,先请看下面脚本. //加减 <script type="text/javascript" lan ...

  8. js float运算精度问题

    先放个前辈的文章:JavaScript数字精度丢失问题总结 今天遇到了19.99*100的问题,答案不等于1999,因为在javascript中浮点数的计算是以2进制计算的.自己写了一波解决方法(不能 ...

  9. Java使用BigDecimal保留double、float运算精度、保留指定位数有效数字、四舍五入

    工具类 package --; import java.math.BigDecimal; /** * Created by kongqw on 2015/12/10. */ public final ...

随机推荐

  1. p188习题2

  2. 开启InnoDB每表一个独立的表空间

    mysql> show variables like '%innodb%'; +---------------------------------+----------------------- ...

  3. Mysql or Mongodb LBS快速实现方案

    http://www.wubiao.info/470 前两篇文章: 查找附近的xxx 球面距离以及Geohash方案探讨 (http://www.wubiao.info/372) 微信.陌陌 架构方案 ...

  4. GDB调试笔记

    参考资料:GDB调试精粹及使用实例 # 调试实例 #include <iostream> #include <cstring> using namespace std; ][] ...

  5. C++的那些事:容器和泛型算法

    一.顺序容器 1,标准库定义了3种类型的顺序容器:vector.list和deque.它们的差别主要在于访问元素的方式,以及添加或删除元素相关操作运算代价.标准库还提供了三种容器适配器:stack.q ...

  6. lr_save_var字符串截取总结

    函数作用: 将一个变化长度的字符串保存到parameter中. 用法实例: 此处讲解函数: Action() {     web_save_timestamp_param("tStamp&q ...

  7. linux全部命令

    linux全部命令 一.安装和登陆命令1.进入图形界面startx 2.进入图形界面init 5 3.进入字符界面init 3 4.登陆login 5.关机poweroff-p 关闭机器的时候关闭电源 ...

  8. C# MarshalByRefObject 和Serializable的区别

    这两种方式的类一般都是用于远程传输时使用. marshalbyrefobject是通过引用传递serializable是通过值传递,现在就来分析下什么是引用传递,什么是值传递. 理解这个对Remoti ...

  9. SU Demos-02Filtering-06Sukfilter

    本demo中数学原理纯粹不知道,看来以后需要抓紧时间补课了,只附图. 运行结果图如下:

  10. node相关--代码共享

    代码共享问题: 是否值得在两个环境中运行同一份代码: //看项目 依赖的API是否在两个环境中都有或有替代: 浏览器提供的标准API:XMLHttpRequest.WebSocket.DOM.canv ...