[英]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
必須解析為true
或false
,因此必須是邏輯表達式。
鑒於:
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
的結果在第一次進入時未知,即它可以是true
或false
。 此外, n
不會在{...}
中修改,因此如果初始路徑恰好進入括號,則condition
只會由於i
的變化而改變。 但是同樣,因為n
的值是未知的,所以只會發生未定義的行為。
我不知道這是什么語言,但!someVar
通常是“變量為假”的簡寫語法,或者是另一種寫法someVar == false
。 在二進制中, 0
為假, 1
為真。 在 C 語言中, 0
為假,非0
為真。 因此,在您的循環中, while !x
是while x == false
或while 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.