程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C語言“全能比較函數”新鮮出爐(第二版),任意數據類型

C語言“全能比較函數”新鮮出爐(第二版),任意數據類型

編輯:關於C語言

第一版:
[cpp] 
#include <stdio.h> 
 
// 下面就是“全能比較函數”,a>b返回整數,a<b返回負數,a==b返回0  
#define COMPARE(TYPE,a,b)   ((TYPE)a-(TYPE)b) 
 
int main(int argc, char *argv[]) 

    double a=1, b=1.5, c; 
    int x=10, y=1, z; 
    char m='m', n='n', k; 
     
    c = COMPARE(double, a, b); 
    printf("%lf \n", c); 
     
    z = COMPARE(int, x, y); 
    printf("%d \n", z);  
     
    k = COMPARE(char, m, n); 
    printf("%d \n", k);  
     
    return 0; 

返回的數據類型不統一,跟輸入的數據類型有關;能不能統一返回int類型的結果呢?


第二版:比較結果為int類型

[cpp] 
#include <stdio.h> 
 
// 下面就是“全能比較函數”,a>b返回整數,a<b返回負數,a==b返回0  
#define COMPARE(TYPE,a,b)   (((TYPE)a-(TYPE)b)==0?0:(((TYPE)a-(TYPE)b)>0?1:-1)) 
 
int main(int argc, char *argv[]) 

    int result; 
    double a=1, b=1.5; 
    int x=10, y=1; 
    char m='m', n='n'; 
    float f1=6.02, f2=6.0200002; 
     
    result = COMPARE(double, a, b); 
    printf("%d \n", result); 
     
    result = COMPARE(int, x, y); 
    printf("%d \n", result);     
     
    result = COMPARE(char, m, n); 
    printf("%d \n", result); 
     
    result = COMPARE(float, f1, f2); 
    printf("%d \n", result);     
     
    return 0; 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved