-
Сабж.
-
Результат функции всегда по умолчанию неопределен.
-
Немного поэксперементировал, у меня нулевой получается.
-
Это заблуждение.
-
Результат функции
function AA: integer;
begin
end;
зависит, например, от компилятора и от его настроек.
-
> Немного поэксперементировал, у меня нулевой получается.
Мало поэксперементировал...
-
> Результат функции всегда по-умолчанию нулевой?
Для простых типов - неопределен.
Для динамических массивов и строк - соответствует временной переменной, которую компилятор создает до/для вызова функции.
-
> соответствует временной переменной
она создается, например, при таком вызове:
Function1(Function2())
и передается как параметр в Function1. При многократном вызове этого кода в цикле значение Result для Function2 равен ее предыдущему результату, поэтому если функция возвращает строку, то она должна как минимум присвоить пустую строку.
-
> Немного поэксперементировал, у меня нулевой получается.
Хорошо ещё что не два нуля. :)
-
Если результат всегда одинаковый, то над заменить процедурой, а еще лучше вообще выкинуть, поскольку переменной в этом случае можно присвоить константу, а если дальше пойти, то и переменная не нужна, просто можно сразу работать с констатной.
-
> Anatoly Podgoretsky © (07.05.08 14:36) [9]
>
> Если результат всегда одинаковый, то над заменить процедурой,
function (a : Boolean) : Integer;
begin
if a = 0 then exit;
...
Кто нибудь может привести пример где результат получался бы не нулевой?
-
> Кто нибудь может привести пример где результат получался бы не нулевой?
Когда параметр передается через стек, а в eax остался результат предыдущей операции.
-
> Кто нибудь может привести пример где результат получался
> бы не нулевой?
А наличие варнинга не смущает?
Или тв на такую чушь не обращаешь внимания?
А с твоим стилем программирования не мешало бы.
-
> Дрёма (08.05.08 02:26) [10]
>
>
Фрипаскалем скомпильни
-
> function (a : Boolean) : Integer;
> begin
> if a = 0 then exit;
А разве Boolean неявно приводится к целому ?
-
> Дрёма (08.05.08 02:26) [10]
:) он еще и предупреждениям компилятора не верит... это LMD однозначно
Function Func1:String;
Begin
Result:='блабла';
End
Function Func2:Integer;
Begin
End;
ButtonClick
ShowMessage(Func1);
ShowMessage(IntToStr(Func2));