Конференция "Прочее" » Результат функции всегда по-умолчанию нулевой?
 
  • Дрёма (07.05.08 02:22) [0]
    Сабж.
  • Palladin © (07.05.08 02:27) [1]
    Результат функции всегда по умолчанию неопределен.
  • Дрёма (07.05.08 02:56) [2]
    Немного поэксперементировал, у меня нулевой получается.
  • Palladin © (07.05.08 03:17) [3]
    Это заблуждение.
  • TUser © (07.05.08 09:38) [4]
    Результат функции
    function AA: integer;
    begin
    end;

    зависит, например, от компилятора и от его настроек.
  • Ega23 © (07.05.08 09:49) [5]

    > Немного поэксперементировал, у меня нулевой получается.


    Мало поэксперементировал...
  • Loginov Dmitry © (07.05.08 12:56) [6]

    > Результат функции всегда по-умолчанию нулевой?


    Для простых типов - неопределен.
    Для динамических массивов и строк - соответствует временной переменной, которую компилятор создает до/для вызова функции.
  • Loginov Dmitry © (07.05.08 13:03) [7]

    > соответствует временной переменной


    она создается, например, при таком вызове:
    Function1(Function2())
    и передается как параметр в Function1. При многократном вызове этого кода в цикле значение Result для Function2 равен ее предыдущему результату, поэтому если функция возвращает строку, то она должна как минимум присвоить пустую строку.
  • Германн © (07.05.08 14:21) [8]

    > Немного поэксперементировал, у меня нулевой получается.

    Хорошо ещё что не два нуля. :)
  • Anatoly Podgoretsky © (07.05.08 14:36) [9]
    Если результат всегда одинаковый, то над заменить процедурой, а еще лучше вообще выкинуть, поскольку переменной в этом случае можно присвоить константу, а если дальше пойти, то и переменная не нужна, просто можно сразу работать с констатной.
  • Дрёма (08.05.08 02:26) [10]

    > Anatoly Podgoretsky ©   (07.05.08 14:36) [9]
    >
    > Если результат всегда одинаковый, то над заменить процедурой,


    function (a : Boolean) : Integer;
    begin
     if a = 0 then exit;
    ...



    Кто нибудь может привести пример где результат получался бы не нулевой?
  • Asteroid © (08.05.08 05:24) [11]
    > Кто нибудь может привести пример где результат получался бы не нулевой?
    Когда параметр передается через стек, а в eax остался результат предыдущей операции.
  • ЮЮ © (08.05.08 06:39) [12]
    > Кто нибудь может привести пример где результат получался
    > бы не нулевой?


    А наличие варнинга не смущает?
    Или тв на такую чушь не обращаешь внимания?
    А с твоим стилем программирования — не мешало бы.
  • TUser © (08.05.08 08:33) [13]

    > Дрёма   (08.05.08 02:26) [10]
    >
    >

    Фрипаскалем скомпильни
  • guav © (08.05.08 11:13) [14]
    > function (a : Boolean) : Integer;
    > begin
    > if a = 0 then exit;

    А разве Boolean неявно приводится к целому ?
  • Palladin © (08.05.08 12:29) [15]

    > Дрёма   (08.05.08 02:26) [10]


    :) он еще и предупреждениям компилятора не верит... это LMD однозначно

    Function Func1:String;
    Begin
    Result:='блабла';
    End

    Function Func2:Integer;
    Begin
    End;

    ButtonClick

    ShowMessage(Func1);
    ShowMessage(IntToStr(Func2));
 
Конференция "Прочее" » Результат функции всегда по-умолчанию нулевой?
Есть новые Нет новых   [134435   +34][b:0][p:0.001]