Когда вы вызываете isdigit(num)
, num
должен иметь значение ASCII символа (0..255 или EOF).
Если он определен как int num
, то cin >> num
поместит в него целое число числа, а не значение ASCII буквы.
Например:
int num;
char c;
cin >> num; // input is "0"
cin >> c; // input is "0"
затем isdigit(num)
ложно (потому что в месте 0 ASCII не цифра), но isdigit(c)
верно (потому что в месте 30 ASCII есть цифра '0').