! оператор, используемый для указателей в C

#c

Вопрос:

У меня есть следующий цикл While, и у меня возник вопрос относительно синтаксиса

  1. В ! оператор обычно означает не так, означает ли это, что цикл while будет выполняться до тех пор, пока не будет определен выход.

Wavplayback:

 typedef struct
{
    struct {
        BOOL Seek_Active;
        DWORD Seek_Postion;

    }seek;
    CRITICAL_SECTION WavPlaybackCriticalSection;
    BOOL LoadNewFile;
    BOOL Pause;
    BOOL UnPause;
    BOOL Stop;
    BOOL Verify;
    BOOL Play;
    BOOL Initialise;
    BOOL Exit;
    BOOL Flush;
    BOOL ValidateHeaderData;
    void *Parent;
    void (*SetPageState)(LONGLONG Page, DWORD State);
}WAVPLAYBACK;
 
 WAVPLAYBACK     *pPlayBack;
typedef int Exit;
 
 while (!pPlayBack->Exit) 
{
//Executing some code
}

 

Комментарии:

1. -> имеет более высокий приоритет , чем ! , поэтому !pPlayBack->Exit эквивалентно !(pPlayBack->Exit) .

2. Как вы думаете, какой цели typedef int Exit; служит это дело?

Ответ №1:

Да, вы правы. Они завершат цикл, когда pPlayBack->Exit станут ИСТИННЫМИ по какой-либо внешней(другой поток и т.д.) Или внутренней (внутри цикла) причине.