C Do 循环错误解释条件

C Do loop misinterpreting conditions

我正在尝试 运行 c 中的 do 循环,但条件似乎相反。这是我的代码:

#import <cs50.h>
#import <stdio.h>

int main()
{
    int n;
    do
    {
        n = get_int("Number: ");
    }
    while ((n < 23)&&(n >= 0));
    printf("%i\n", n);
}

如果我输入 52,它应该会重新提示我,但它会打印出来。如果我将第一个条件的运算符切换为 >,它会重新提示我。然后我将第二个条件的运算符切换为 >=,它打印了任意数字。我可能误解了运营商,但我在网上查了一下,他们似乎是对的。

do { /* ... */ } while ((n < 23)&&(n >= 0)); 这意味着在 n < 23n >= 0.

时在该块中执行某些操作

If I input 52, it should re-prompt me, but it prints it.

对于n == 52,显然n < 23不满足,于是跳出此块执行printf()