У меня проблема с пустым указателем, используемым с оператором троичного условия.
В случае:
int x = 5;
void * pointer = &x;
printf("x: %d \n", 1 == 1 ? (*((int*)pointer)) : (*((char*)pointer)));
Записывает в консоль номер 5, что является правильной активностью. Но когда я изменяю в последней строке символ на удвоение:
printf("x: %d \n", 1 == 1 ? (*((int*)pointer)) : (*((double*)pointer)));
Потом пишет 0, и я не знаю почему. Я знаю, что могу использовать if-else вместо этого, но мне просто любопытно, почему это так работает. Кто-нибудь может мне помочь?