#include<stdio.h>
int main()
{
//void foo();
int c= 5;
c=foo();
printf("\n%d",c);
return 0;
}
void foo()
{
printf("I am foo");
}
Когда я комментирую заявление прототипа, то это дает результат:Что происходит, когда мы назначаем возвращаемое значение вызова функции с возвратом типа void в переменную int?
Я являюсь Foo
С прототипом он дает ошибку говоря:
Значение пустоты не игнорируется, как и должно быть.
Мой вопрос: что происходит внутри, что приводит к выводу, когда нет декларации прототипа? В чем причина этого?
Я использую редактор Dev C++ с TDM-GCC 4.9.2 64-битным компилятором.
это будет UB. –
Пациент: Доктор, мне больно, когда я это делаю. Доктор: Прекрати это делать! Что происходит, когда вы нарушаете контракт, который у вас есть с вашей реализацией, заключается в том, что ваша реализация может делать то, что чертовски хорошо хочет :-) – paxdiablo