This question already has answers here:
Closed 5 years ago.
Inline functions vs Preprocessor macros
(13个答案)
如果我的程序需要一个简单的函数,比如说确定两个数的最大值,那么最好这样定义它:
或
我做了一个简单的程序打印
和
我测试了两个程序10次,并计算了平均运行时间。第一个程序的平均值是0.8880,第二个程序的平均值是0.8575。有什么比运行时更好用,还有什么区别吗?
比
因为考虑一下
使用define宏
这显然不是你想要的。
(13个答案)
如果我的程序需要一个简单的函数,比如说确定两个数的最大值,那么最好这样定义它:
#define getmax(a, b) ((a)>(b)?(a):(b))
或
int getmax(int a, int b)
{
return a>b?a:b;
}
我做了一个简单的程序打印
getmax(a, b)
#include<stdio.h>
#define getmax(a, b) ((a)>(b)?(a):(b))
int main()
{
int i, j;
for( i = 0; i < 100; i++)
for( j = 0; j < 100; j++)
printf("%d\n", getmax(i, j));
return 0;
}
和
#include<stdio.h>
int getmax(int a, int b)
{
return a>b?a:b;
}
int main()
{
int i, j;
for( i = 0; i < 100; i++)
for( j = 0; j < 100; j++)
printf("%d\n", getmax(i, j));
return 0;
}
我测试了两个程序10次,并计算了平均运行时间。第一个程序的平均值是0.8880,第二个程序的平均值是0.8575。有什么比运行时更好用,还有什么区别吗?
最佳答案
int getmax(int a, int b)
{
return a>b?a:b;
}
比
#define getmax(a, b) ((a)>(b)?(a):(b))
因为考虑一下
getmax(a++,b++);
使用define宏
((a++)>(b++)?(a++):(b++));
这显然不是你想要的。
关于c - 什么是更好的? #define getmax(a,b)或int getmax(a,b),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23133778/
10-10 13:41