2014-04-17 49 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不是你想要的。

相關問題