如果我的程序需要一个简单的函数,让我们说最多确定两个数字,最好定义它:
#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。什么是更好的使用,除了运行时还有其他区别吗?
答案 0 :(得分:2)
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++));
这可能不是你想要的。