char
является целочисленным типом в C. Вы можете выполнить проверку напрямую:
char c;
/* assign to c */
if (c >= 0 && c <= 127) {
/* in ASCII range */
}
Я предполагаю, что вы не хотите использовать isascii()
(это не соответствует стандарту C, хотя это POSIX).
Кроме того, вы можете проверить, равно ли CHAR_MAX
127. Если это так, вам не нужно сравнение с 127, поскольку c
не будет превышать его по определению. Аналогично, если CHAR_MIN
равно 0, то сравнение с 0. Вам не нужно сравнивать. Оба CHAR_MIN
и CHAR_MAX
определены в limits.h
.
Я думаю, вы думаете о целочисленном значении, переполняющем char
, и поэтому преобразуете его в int
. Но это не поможет с переполнением, так как ущерб уже нанесен.