今天翻书在学习基本c++语法的时候看到了一个很经典的宏定义下的错误,即#define square(x) (x)*(x),但将x赋值为a++以后输出咱就看不懂了,虚心求解答。
编译器:vs2022
c++语言
下面是三个有疑惑的例子:
今天翻书看到了一个很经典的宏定义下的错误,即#define square(x) (x)*(x),但将x赋值为a++以后输出咱就弄不明白了,虚心求解答
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答 默认 最新
- 小宁子想不到 2022-04-21 13:57关注
宏定义只是进行了一次替换相当于cout<<(a++)(a++)<<" "<<(++a)(++a)<<a
你对比运算顺序可以看出来 ++运算在*运算和输出运算前.和编译器也有原因你用gcc编译结果也不一样
解决 1无用
悬赏问题
- ¥20 关于web前端如何播放二次加密m3u8视频的问题
- ¥20 spring boot集成mqtt的使用问题
- ¥15 使用百度地图api 位置函数报错?
- ¥15 metamask如何添加TRON自定义网络
- ¥66 关于川崎机器人调速问题
- ¥15 winFrom界面无法打开
- ¥30 crossover21 ARM64版本安装软件问题
- ¥15 mymetaobjecthandler没有进入
- ¥15 mmo能不能做客户端怪物
- ¥15 osm下载到arcgis出错