如果有人能解釋這一點,這將是有益的。的這個在「if」條件下分配零時會發生什麼?
int main()
{
int a=0;
if(a=0)
printf("a is zero\t");
else
printf("a is not zero\t");
printf("Value of a is %d\n",a);
return 0;
}
輸出是
a is not zero Value of a is 0
如果有人能解釋這一點,這將是有益的。的這個在「if」條件下分配零時會發生什麼?
int main()
{
int a=0;
if(a=0)
printf("a is zero\t");
else
printf("a is not zero\t");
printf("Value of a is %d\n",a);
return 0;
}
輸出是
a is not zero Value of a is 0
分配的結果是表達的值。
因此:
if (a = 0)
相同:
if (0)
這是一樣的:
if (false)
這將迫使else
路徑。
+1;似乎這是解決核心問題的唯一答案。 – Makoto
+1很好的解釋。 – STLDeveloper
@Makoto是的,正是人們忘記了解決OP的真實意圖時急着寫答案:)我也是+1。 :) – 0decimal0
if(a=0)
是在變量a
中0
的分配。如果你想比較a
對零,你需要寫像下面 if(a==0)
你的條件是正在a
爲零所以條件得到錯誤的,你是從else
部分入門打印簡單的任務。
OP不需要==。 OP已經非常明確地表明分配是有意的。 –
@JimBalter你知道嗎,這就是爲什麼我已經給出了條件失敗的原因,以及爲什麼從其他部分打印。我建議比較也只是爲了安全一面。 –
if(a=0)
printf("a is zero\t");
else
printf("a is not zero\t");
這些消息正好倒過來。如果條件不 0執行if
後的聲明,並在條件爲 0,則執行ELSE後面的語句,所以這應該是
if(a=0)
printf("a is not zero\t");
else
printf("a is zero\t");
,或等效但更明確地,
a = 0;
if(a)
printf("a is not zero\t");
else
printf("a is zero\t");
如果()函數接受真或假值作爲參數。
所以無論你放在括號裏面對if()函數沒有任何意義,但事實上它有什麼價值。
在任何情況下,「0」會被視爲假值,所以當你傳遞0像一個說法:
if(0)
{
---statments---
}
不會得到執行的語句部分,並且系統會直接跳轉到別的部分。
如果您提到您將變量賦值爲0並將其作爲參數傳遞給if()。 請注意,如果()只接受0或非0值。所以,你做出的任務並不重要。 if()將接收變量'a'的值作爲參數並相應地執行。
在這種情況下,由於a的值爲0,所以if部分不會被執行,系統將跳轉到else。
您的代碼行出錯:'if(a = 0)'應該是'if(a == 0)'。 – STLDeveloper
您使用賦值運算符而不是比較運算符== –
您必須闡明您想要解釋的內容。代碼功能很簡單。而且,從你的問題的標題來看,你似乎已經明白'if'下的'a = 0'是一項任務,而不是比較。那麼問題是什麼? – AnT