簡體   English   中英

與增量運算符的使用混淆

[英]Confusion with usage of Increment Operator

我正在學習C.我遇到了以下課程 -

#include <stdio.h>

int main() {
  int var1 = 2, var2 = 6;
  var2 = var2 || var1++ && printf("Computer World");
  printf("%d %d\n", var1, var2);
  return 0;
}

在Ubuntu 10.10上使用gcc 4.4.5進行編譯后,我得到的輸出為 -

2 1

我理解'var2'是如何設置為1的。

甚至認為'var1'上有一個遞增運算符,為什么當我們看到控制台輸出時它沒有增加?

var2 || var1++ && printf("Computer World");

是一個邏輯運算,所以如果var2true (var2不等於零)那么第二個邏輯運算var1++ && printf("Computer World"); 將不會被執行(它被稱為短路操作 )。 這就是為什么var1沒有增加的原因

嘗試以這種方式反轉邏輯運算,你會得到var1遞增:

var2 = var1++ && printf("Computer World") || var2;

在C中, || 是一個快捷方式運算符,表示在exp1 || exp2exp1 || exp2 exp1 || exp2 ,如果可以通過評估exp1來確定此表達式的真值,則不會計算exp2

例如,在您的情況下,評估var2的結果是6 ,這在C中是正確的,因此表達式的其他部分,即var1++ && printf("Computer World")將不會被評估。

您可以查看快捷操作符以獲取更多詳細信息。

暫無
暫無

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

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