Re: вопрос про "if"
От: Kaa Украина http://blog.meta.ua/users/kaa/
Дата: 11.02.02 11:07
Оценка:
Здравствуйте kostaLom, Вы писали:

L>Код, написанный на Microsoft Visual C++:

L>// ...
L>typedef struct cvar_s
L>{
L>    char        *name;
L>    char        *string;
L>    char        *latched_string;
L>    int        flags;
L>    boolean    modified;
L>    float        value;
L>    struct cvar_s *next;
L>} cvar_t;

L>// ...
L>cvar_t    *cl_dedicated;

L>// ...
L>// Что означает это выражение? Что вычисляется в нем?
L>
    if (dedicated && dedicated->value)    // "А"

Проверить, не равен ли нулевому указателю указатель dedicated. Если нет, продолжить вычисление логического выражения.
Проверить, не равен ли нулевому указателю dedicated->value. Если нет, войти в тело оператора if.
L>/*
L>Является ли выражение "Б" равноценным "А"?
L> if (dedicated->value == 0) // "Б"
Нет. Если dedicated == NULL, то обращение к члену объекты, заданного через нулевой указатель, приведет к EXCEPTION_ACCESS_VIOLATION. Нельзя обращаться к члену чего-то, чего на самом деле нет.
L>А то Borland C++ 5.02 ругается на "invalid operation with float point"
L>А вот выражение:
L>
    if(minimized)

L>Это тоже самое ли?
L>
    if(minimized == TRUE)

L>*/
Нет. Это то же самое, что minimized != 0.0 или minimized != 0 (в предположении, что объявление minimized следующее:
double minimized;


С уважением
Алексей Кирдин
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.