关于#define运算的问题

[复制链接]
查看11 | 回复5 | 2018-4-20 19:45:22 | 显示全部楼层 |阅读模式
展开过程:A/B*3 => 1/A+3*3 => 1/1+3*3 可见结果是1 + 9 = 10这是因为宏展开时,B被换成了1+3, 这是两个数,不是一个整体。为了保持优先级,可以这样:#define B (A+3) 这样展开为:A/B*3 => 1/(A+3)*3 =>1/(1+3)*3 = 0...
回复

使用道具 举报

千问 | 2018-4-20 19:45:22 | 显示全部楼层
C =A /B *3 =A / A + 3 * 3 = 1/1 + 9 = 10;因为B没有加括号 若上面有括号就是这样展开的 A/(A + 3) * 3 = 0;你上机试试...
回复

使用道具 举报

千问 | 2018-4-20 19:45:22 | 显示全部楼层
宏定义是不做任何运算的,只是简单的做替换。所以替换的结果就是1/1+3*3=10...
回复

使用道具 举报

千问 | 2018-4-20 19:45:22 | 显示全部楼层
define是替换所以,C替换后的结果是,1/1+3*3答案就是10了...
回复

使用道具 举报

千问 | 2018-4-20 19:45:22 | 显示全部楼层
#define是c++与c语言中的宏定义,他本身相当于一种文字替换,不能就行运算的。...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行