Он имитирует поведение функции каста Boolean()
. Первый NOT
возвращает логическое значение независимо от того, какой операнд ему задан. Второй NOT
отрицает значение Boolean
и поэтому дает true
логическое значение переменной. Конечный результат совпадает с использованием функции Boolean()
для значения.
Вы можете использовать limit.h , чтобы выяснить, какие самые большие целочисленные значения в вашей системе. Вы можете использовать float.h , чтобы выяснить, какие самые большие значения с плавающей точкой.
Вот пример для limit.h:
#include <limits.h>
#include <stdio.h>
int main() {
printf("INT_MAX: %d\n", INT_MAX);
printf("UINT_MAX: %u\n", UINT_MAX);
printf("LONG_MAX: %ld\n", LONG_MAX);
printf("ULONG_MAX: %lu\n", ULONG_MAX);
}
Я не уверен, что твой инструктор имеет в виду под «на единицу меньше, чем максимальное плавание». На единицу меньше, чем максимальное число с плавающей запятой, не представляется.
Независимо от того, какое значение я присваиваю плавающему для его проверки, он печатает что-то другое в printf
blockquote>Плавающая точка не может точно представлять все числа. Вот как определить, можете ли вы представить это точно:
- Преобразовать в дробь
- Уменьшить дробь
- Проверьте, является ли знаменатель степенью двойки.
Пример: Можно ли точно представить
0.1
?
- Сначала преобразуйте его в дробь:
1/10
- Затем уменьшите:
1/10
- 10 не является степенью двойки. Следовательно,
0.1
не может быть точно представлено.