白
白衣书生
Unregistered / Unconfirmed
GUEST, unregistred user!
小弟菜鸟一个,偶尔学学c++,现在有如下源码:
#include <stdio.h>
#define max(a,b) ((a) > (b) ? (a) : (b))
main()
{ int a = 5, b = 0;
max(++a, b);
printf("% d",a);
max(++a, b+10);
printf ("%d",a);
getchar();
}
运行结果显示7和8,但是我按照源码分析,认为结果应是6和 7,怎么会变成7和8呢?
怎么多了一次?
而我把宏定义#define换成max(int a,int b){......} 函数时,结果会是6和7!
这个问题是否出在 #define max(a,b) ((a) > (b) ? (a) : (b))的宏定义上?
#define究竟怎么用才对?
小弟我一头雾水,请各位富翁点拨一下,多谢!
我的编译环境是turbo c++ ---
#include <stdio.h>
#define max(a,b) ((a) > (b) ? (a) : (b))
main()
{ int a = 5, b = 0;
max(++a, b);
printf("% d",a);
max(++a, b+10);
printf ("%d",a);
getchar();
}
运行结果显示7和8,但是我按照源码分析,认为结果应是6和 7,怎么会变成7和8呢?
怎么多了一次?
而我把宏定义#define换成max(int a,int b){......} 函数时,结果会是6和7!
这个问题是否出在 #define max(a,b) ((a) > (b) ? (a) : (b))的宏定义上?
#define究竟怎么用才对?
小弟我一头雾水,请各位富翁点拨一下,多谢!
我的编译环境是turbo c++ ---