Я полагал, что в следующем коде C автоматически отбрасывает 17 на int *
, что, как недавно указывал кто-то (но не объяснял причины), ошибочно.
int *ptoi = 17; // I assumed that 17 is being automatically casted to int *
Я знаю, что если я делаю то же самое, что и выше в С++, я получаю сообщение об ошибке invalid conversion from int to int *
. Но если я делаю следующее в С++, он отлично работает:
int *ptoi = (int *)17;
Вот причины, по которым я думал, что в C кастинг был неявным.
Может ли кто-нибудь объяснить, почему, на С++, я должен использовать его, но на C он отлично работает?