簡體   English   中英

我看不懂的條件語句

[英]A conditional statement that I can't understand

我在一個C++教程視頻中看到了幾行代碼

void copy_string(char* from, char* to)
{
    while ((*to = *from) != '\0')
    {
        to++;
        from++;
    }
}

function用於將字符串“from”復制到字符串“to”中,但是我無法理解while循環內的條件語句。 為什么它能夠同時賦值和比較?

它既是一個賦值*to = *from也是一個比較

(*to = *from) != 0

它首先將取消引用的指針從“from”分配給“to”,然后檢查分配的值是否等於 0,即 null 終止符。 如果是這樣,則退出循環並完成復制。

為什么它能夠同時賦值和比較?

相同的表達式既分配又比較,因為它包含用於每個目的的單獨運算符。

=是一個賦值運算符。 它將右側操作數的值分配給左側操作數(這在技術上是一個副作用),並計算分配的值。 它評估為一個值可能是您缺少的點。

!=是一個比較運算符。 它確定其左側和右側操作數的值是否不相等。 如果是,則評估為 1,否則,評估為 0。

還有== ,一個比較運算符,它評估其左側和右側操作數的值是否相等(與!=相反)而不修改任何一個的值。

但是請注意,盡管整個表達式同時執行賦值和比較,但它們不一定同時發生

暫無
暫無

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

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