Я пытаюсь понять, что именно возвращает оператор побитового дополнения в C. (Не в терминах "какое значение", а в терминах "какой тип данных". Полагаю, я понимаю, как теоретически работает бит-дополнение, поэтому нет необходимости переиспользовать это)
Рассмотрим следующий код:
int main(int argc, char **argv){
char c = 'A';
printf("%d, %d\n", sizeof(c), sizeof(~c));
return 0;
}
В то время как первый sizeof() возвращает 1, последний возвращает 4 на моем компьютере.
Итак, мой вопрос: из какого типа данных является ~ c?
Я работаю над 32-битным Linux, изменится ли результат на 8, если я буду работать на 64-битной машине? До сих пор я догадываюсь, что побитовая операция применяется к регистру, а возвращаемое значение не возвращается к значению char. И может ли это поведение быть другим для других компиляторов, или же стандарт C определяет, что такое возвращено ~ c?