簡體   English   中英

“while(!x && i < n)”中的“!x”是什么意思

[英]what is the meaning of "!x" in "while(!x && i < n)"

所以我在教科書中看到了這一點,但我無法理解它是如何工作的。

x=0;
int i = 0;
int n;
while(!x && i < n){
    if(array[i]==target)
        x=1;
   else
        ++i;
}

我不明白“.x”如何在循環條件下工作。

我的理解是這個循環一直運行直到它運行 n 次或當 array[i]==target 時,這會將 x = 0 的值更改為 x = 1 並停止循環。

我嘗試了什么:我嘗試將.x 替換為 x==0 並且它做了同樣的工作。

這里的簡短回答是!x是什么並不重要,因為它被未定義的行為所包圍,完全抵消了它的影響。

在聲明中

While(condition) {...}

condition必須解析為truefalse ,因此必須是邏輯表達式。

鑒於:

int x=0;//This answer assumes 'int' here as not specified in OP
int i = 0;
int n;
while(!x && i <n)

因為x被初始化為0 ,相當於false表達式!x解析為true ,滿足部分條件。

然而,因為n沒有被初始化,條件(!x && i <n)調用未定義的行為,使得整體condition的結果在第一次進入時未知,即它可以是truefalse 此外, n不會在{...}中修改,因此如果初始路徑恰好進入括號,則condition只會由於i的變化而改變。 但是同樣,因為n的值是未知的,所以只會發生未定義的行為。

我不知道這是什么語言,但!someVar通常是“變量為假”的簡寫語法,或者是另一種寫法someVar == false 在二進制中, 0為假, 1為真。 在 C 語言中, 0為假,非0為真。 因此,在您的循環中, while !xwhile x == falsewhile x == 0的簡寫語法。 同樣,一般來說,因為我們不懂語言。

While(,x) 表示如果 x 是一個條件,那么我們 go 進入 while 循環。 僅當條件不滿足時,在您的代碼中,您已將 x 分配為零,so.x 表示 1,因為 '.' 基本上意味着相反 if x =0 then.x =1, if x=1 then !x=0 (所有大於 1 的數字也僅被視為 1)所以 while(1 && i<n) 是這里發生的事情下一步。如果 i<n 為真,那么您將進入循環。 如果 i<n 為 false,您將不會進入循環。

while(!x)
{
    intructions;
} 

意味着您的指令只會在 x 為假或等於 0 時反復運行,並且一旦 x 變為真或不同於 0,將停止執行指令

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM