2014-04-17 47 views
1

如果我需要我的程序的简单功能,可以说,以确定两个数的最大值,是它更好地定义它想:有什么更好? #定义GetMax的(A,B)或INT GetMax的(A,B)

#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

这不是该问题的重复。这是问关于c函数,而不是内联C++函数 –

回答

3
int getmax(int a, int b) 
{ 
    return a>b?a:b; 
} 

优于

#define getmax(a, b) ((a)>(b)?(a):(b)) 

因为考虑做

getmax(a++,b++); 

随着宏定义你

((a++)>(b++)?(a++):(b++)); 

这是propably不是你想要的。

相关问题