Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Hàm isgreater() trong C/C++

Hàm isgreater() kiểm tra x > y an toàn floating-point (không raise FE_INVALID cho NaN). Trả về true (1) nếu đúng, false (0) nếu sai. Khai báo trong <math.h> / <cmath>.

Cú pháp

bool isgreater(float/double/long double x, float/double/long double y);

Ví dụ

#include <iostream>
#include <cmath>
using namespace std;

int main() {
    int a = 28, b = 8;
    bool r = isgreater(a, b);
    cout << "a > b: " << r << endl;  // 1
    
    a = 5; b = 8;
    r = isgreater(a, b);
    cout << "a > b: " << r << endl;  // 0
    return 0;
}

Kết quả

a > b: 1
a > b: 0

Giải thích: So sánh a > b. Với integer tương đương >. Ý nghĩa thực sự với float/double NaN: isgreater(NaN, 5) = false, không raise exception.

Tổng hợp các macro so sánh FP an toàn (C99/C++11)

Macro/HàmSo sánhMô tả
isgreater(x,y)x > yLớn hơn
isgreaterequal(x,y)x >= yLớn hơn hoặc bằng
isless(x,y)x < yNhỏ hơn
islessequal(x,y)x <= yNhỏ hơn hoặc bằng
islessgreater(x,y)x < y || x > yKhác nhau (không bằng, không NaN)
isunordered(x,y)x NaN || y NaNÍt nhất một là NaN
Lưu ý: Cần #include <math.h> và -lm. Dùng cho float/double. Với integer, dùng >, >=... thông thường.