[英]Why can't I use a “break” statement inside a ternary conditional statement in C++?
[英]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.