Здравствуйте 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;
С уважением
Здравствуйте Kaa, Вы писали:
L>>// Что означает это выражение? Что вычисляется в нем?
L>> if (dedicated && dedicated->value) // "А"
Kaa>Проверить, не равен ли нулевому указателю указатель dedicated. Если нет, продолжить вычисление логического выражения.
Kaa>Проверить, не равен ли нулевому указателю dedicated->value. Если нет, войти в тело оператора if.
Точнее, не равен ли нулю член структуры value.
L>>/*
L>>Является ли выражение "Б" равноценным "А"?
L>> if (dedicated->value == 0) // "Б"
Kaa>Нет. Если dedicated == NULL, то обращение к члену объекты, заданного через нулевой указатель, приведет к EXCEPTION_ACCESS_VIOLATION. Нельзя обращаться к члену чего-то, чего на самом деле нет.
Кроме того, услвие на value тут ровно обратное A.
L>>А то Borland C++ 5.02 ругается на "invalid operation with float point"
L>>А вот выражение:
L>> if(minimized)
L>>Это тоже самое ли?
L>> if(minimized == TRUE)
L>>*/
Kaa>Нет. Это то же самое, что minimized != 0.0 или minimized != 0 (в предположении, что объявление minimized следующее:
Kaa>double minimized;
Тонее это разница между minimized!=0 и minimized=const. Т.е. между любым числом, кроме 0, и данным конкретным числом.