做循环问题

Lor*_*rek 3 c++ while-loop

do 
{
  cout << "Car is coming ... " << "[P]ay or [N]ot?" << endl;
  ch=getch();
} while ( ch !='q' || ch != 'Q');
Run Code Online (Sandbox Code Playgroud)

为什么在下面的代码中,代码在顶部不起作用?我用各种方式围绕每个语句用括号尝试它,编译器每次都会弹出一个错误,直到我重新组织它们,如下所示.我只是想知道为什么会这样做.

do 
{
  cout << "Car is coming ... " << "[P]ay or [N]ot?" << endl;
  ch=getch();
} while ( !(ch=='q' || ch=='Q') );
Run Code Online (Sandbox Code Playgroud)

我正在使用Visual Studio 2008作为我的编译器; x86架构.

YXD*_*YXD 16

了解德摩根的法律

(不是A)或(不是B)

是不一样的

不是(A或B).