isless(x, y) kiểm tra x < y cho floating-point, không ném ngoại lệ (quiet) khi đối số là NaN. Header: <math.h> / <cmath>.
Cú pháp
// C (macro) int isless(real-floating x, real-floating y); // C++ (overload) bool isless(float x, float y); bool isless(double x, double y); bool isless(long double x, long double y);
Ví dụ
#include <stdio.h>
#include <math.h>
int main() {
int val1 = 48;
float val2 = 324.32f;
if (isless(val1, val2))
printf("val1 < val2\n");
else
printf("val1 >= val2\n");
// Test với NaN
double nan = nan("");
printf("isless(NaN, 5) = %d\n", isless(nan, 5.0)); // 0
printf("isless(5, NaN) = %d\n", isless(5.0, nan)); // 0
printf("5 < NaN (operator) = %d\n", 5.0 < nan); // 0 (nhưng có thể raise FE_INVALID)
return 0;
}
Kết quả
val1 < val2 isless(NaN, 5) = 0 isless(5, NaN) = 0 5 < NaN (operator) = 0
So sánh với operator <
| Trường hợp | isless(x,y) | x < y |
|---|---|---|
| Bình thường (x < y) | true | true |
| Bình thường (x >= y) | false | false |
| x là NaN | false (quiet) | false (có thể raise FE_INVALID) |
| y là NaN | false (quiet) | false (có thể raise FE_INVALID) |
| Cả hai NaN | false (quiet) | false (có thể raise FE_INVALID) |