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