簡體   English   中英

在 c 中評估包含邏輯和增量運算符的表達式

[英]Evaluating an expression containing logical and increment operators in c

盡管我知道 c 語言中運算符的優先級和結合性,但我真的很努力地理解這個表達式是如何在 c 中求值的

   int i=-4,j=2,k=0,m;
   m = ++i || ++j && ++k;

據我所知,預增量運算符首先從左到右評估邏輯,然后是邏輯,因此 I 值將為 -3 j 值將為 3 k 值將為 1,對於 m 值為 1但看來我錯了。

我正在為即將到來的考試研究這個,非常感謝任何幫助。

在試圖理解獲得的最終值背后的邏輯時,您可能遺漏的部分是 C 中所謂的短路

它是什么的總結 -

如果 || 的第一個操作數運算符與 1 比較,則不計算第二個操作數。 同樣,如果 && 運算符的第一個操作數與 0 進行比較,則不會計算第二個操作數。

按照上述規則,對 i ( ++i ) 的一元運算返回 1,因此||的以下操作數語句基本上被忽略。 因此,所有其他變量的值不受影響並且m接收值1

暫無
暫無

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

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