Я не понимаю, выход из этого кода:Функция, возвращающая неправильное значение
#include <stdio.h>
long func(long pass)
{
long ret;
long i = pass;
if (i == 6)
{
printf("i=%ld\n",i);
return i;
}
printf("ended\n");
}
void main()
{
int j;
long it = 0;
for(j = 0; j < 12; j++)
{
printf("%ld\n",func(it));
it++;
}
}
Выходные шоу «закончилась» и «6» каждый раз, кроме случаев, когда оно достигает I = 6, то время он печатает I = 6 и 6.
ПОЧЕМУ? Он не должен каждый раз ходить внутри i == 6?
'func' делает ничего, если не вернется 'pass == 6'. Это неопределенное поведение. – AndyG
большинство современных компиляторов увидели бы, что не каждый путь заканчивается оператором return (value) и должен был вызвать сообщение об ошибке/предупреждении. Предложите включить все предупреждения/ошибки (для использования gcc -Wall) и устранить проблему, прежде чем пытаться ее запустить. – user3629249
Говоря о названии вопроса «Функция, возвращающая неправильное значение»: когда 'i! = 6', что бы вы считали правильным значением? – DavidO