#include #define X 5 #define Y X+1 #define Z Y*X/2 main() {
来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/11 05:08:49
#include #define X 5 #define Y X+1 #define Z Y*X/2 main() { int a; a=Y; printf("%d %d\n",Z
结果为什么是7 5呢,不解,
结果为什么是7 5呢,不解,
宏定义只执行简单的替换操作,就像你把X用5代替一定,Y就用X+1代替就是6,Z用Y*X/2代替,这时候要注意了,是X+1*X/2,也就是5+1*5/2,结果Z就是7,如果你#define Y (X+1),这是带了括号的,然后再去替换到Z里,又是另一个结果,(X+1)*X/2,把5带进去算就是15了,宏定义中带括号和没带括号差别很大的,要特别特别注意,因特他真的是很简单很简单的“替换”操作.
#include #define X 5 #define Y X+1 #define Z Y*X/2 main() {
# include # define MAX(x,y) (x)>(y)?(x):(y) main() { int a=5
#define X 3 #define Y X*2 #undef X #define X 2 int z=Y; z 的值
、 #define M(x,y,z) x*y+z main() { int a=1,b=2,c=3; printf("%
#include #define A 2 #define B(x) x*(A+2) void main() { int
#define min(x,y) (x
#define MIN(x,y)(x)
#define SETBIT(x,y) (x|=(1
c语言#define M(x,y,z) x*y+z
#define max(x,y) x>y?x:
阅读下面程序写出执行或输出结果:#define M(x,y,z) x*y+z main() { int a=1,b=2,
# define M(x,y,z) x*y+z main() { int a=1,b=2,c=3; printf("%d