вопрос про "if"
От: kostaLom  
Дата: 11.02.02 10:56
Оценка:
Код, написанный на Microsoft Visual C++:

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

// ...
cvar_t *cl_dedicated;

// ...
// Что означает это выражение? Что вычисляется в нем?
if (dedicated && dedicated->value) // "А"
/*
Является ли выражение "Б" равноценным "А"?
if (dedicated->value == 0) // "Б"
А то Borland C++ 5.02 ругается на "invalid operation with float point"
А вот выражение:
if(minimized)
Это тоже самое ли?
if(minimized == TRUE)
*/
// ...

Что делает:
_controlfp( _PC_24, _MCW_PC );
Какое определение _PC_24 и _MCW_PC?
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;


С уважением
Алексей Кирдин
Re[2]: вопрос про "if"
От: Lexey Россия  
Дата: 11.02.02 12:44
Оценка:
Здравствуйте 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, и данным конкретным числом.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.