У меня есть небольшой (большой, тупой?) Вопрос о int и символах в C. Я помню из своих исследований, что «символы - это маленькие целые числа и наоборот», и это нормально. Если мне нужно использовать небольшие числа, лучше всего использовать тип символа.
Но в коде, подобном этому:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
int i= atoi(argv[1]);
printf("%d -> %c\n",i,i);
return 0;
}
Я могу использовать в качестве аргумента любое число, которое хочу. Таким образом, с 0-127 я получаю ожидаемые результаты (стандартная таблица ASCII), но даже с большими или отрицательными числами это работает ...
Вот пример:
-181 -> K
-182 -> J
300 -> ,
301 -> -
Почему? Мне кажется, что он катается за столом ASCII, но я не понимаю, как.