我爱占星网 我爱占星网
首页
编程
java
php
前端
首页 编程 java php 前端

宏定义里的强制转换问题

问题相关代码,请勿粘贴截图

#include
#define F(x) 2.84+x
#define w(y) printf("%d",(int)(y))
#define P(y) w(y)
main()
{
int x=2;
P(F(5)*x);
}

为什么结果是12 呢

把F(x)替代一下就知道了
P(F(5) * x),宏替代后就是
P(2.84+5 * x),再展开就是
w(2.84+5 * x),再展开就是
printf("%d",(int)(2.84+5 * x));
当x=2时,2.84+5 * x = 12.84,由于进行了(int)强制转换,所以是12

近期文章

  • 同一个数据,每次运行,id地址都不一样
  • VS2022提示字符常量中字符过多
  • 错误模块名称: nlssorting.dll
  • ubuntu启动出现不明信息
  • java测试类无法运行
  • 构建MySQL镜像报错
  • 用SpringBoot搞的一个简单的登陆注册报错500
  • 按字节编址,存储字长一定等于mdr吗?
  • 调试时图片有圆角,却找不到圆角的css
  • 运行不出来想要的结果,如何解决?(语言-python)
  • Python爬取网页canvas图片时,出现跨域问题
  • windows hellow问题
  • vue调用api报错找不到函数.
  • JS函数内部声明有函数时,不同调用方式的差异?
  • 单链表反转(较简单)
  • 在Pytorch用Resnet50搭建Yolov1,如果不使用torchvision中的库进行预训练就训练不成功
  • 关于excel生成条形码插件
  • mac版sublime怎么适配pygame?
  • uniAPP-飞书小程序嵌入开发H5页面
  • 高度塌陷的问题,用了方法没起作用

Copyright ©2022 我爱占星 All Rights Reserved.

浙ICP备2022030071号-1

部分图文来自网络,如有侵犯您的版权,请告诉我们删除

友情链接:代码精华