2012-06-15 46 views
-3

可能重複:
Post Increment and Pre Increment concept?if(i ++)條件如何工作?

我不能明白是怎麼 「如果條件」,在這種情況下的遞增/遞減操作符:

#include<stdio.h> 
void main() 
{ 
    int n=0; 
    if(n++) 
    { 
    printf("C-DAC"); 
    } 
    else if(n--) 
    { 
    printf("ACTS"); 
    } 
} 

它的輸出ACTS。

IF條件下發生了什麼?

+3

請縮進代碼 - 所有在列1使得它很難看 - 謝謝。 – Levon

+5

需要'家庭作業'標籤? –

+4

爲什麼我們再次回答這個問題? :( – KevinDTimm

回答

18

if (n++)它檢查是否n不等於零,然後遞增n

else if (n--)它檢查是否n不等於零,然後遞減n

你的第一個if說法是不正確的(因爲n爲0),則n遞增,並且檢查else if語句(n等於1),if (1)爲真且printf("ACTS")爲所謂

+0

我很抱歉,但它沒有在程序中的任何地方指定,它必須檢查n!= 0 ...它是如何理解這個的? – Anvay

+0

語句'if(n)'在'C++'中是相等的到'if(n!= 0)'語句 – Ribtoks

+1

實際上根本沒有if條件,至少不是調試版本的外部。編寫程序時,編譯器可以在編譯時證明第一個測試總是假的並且第二個測試總是如此,並且該變量沒有被使用,所以它會將程序減少到'int main(){printf(ACTS)'; return 0;}' – Damon

0

編譯器的值使條件的命令從左到右時尚。這意味着首先它會檢查,如果條件爲假

if (n) 

真實,然後遞增/遞減

n = n +/- 1 
2
int n=0; 
if(n++) 

含義:檢查,然後由1

int n=0; 
if(++n) 

含義遞增:增加1,然後檢查。

1

++--運營商不僅修改該值,他們也有一個返回值。行爲因位置而異:++var增加並返回增加的值,而var++增加,但返回舊值。

+0

我非常肯定'++'和'--'不具有「返回值」。他們是修飾語,而不是功能。 – KevinDTimm

2

int總是給出true,除非它爲零。 後檢查增量運算符i++在檢查後增加i變量。 如果您已使用預增量運算符++i,則增量將在檢查之前進行。

3

兩個n++n-- - 遞增/遞減操作。

這意味着該變量的值用於評價在當前表達第一,然後才改變,(即,遞增/遞減之後)。

0指在布爾表達式FALSE。由於n最初0,在你第一次if測試失敗和else條款進行評估。

此時n已成爲1由於在第一次測試n++,所以這個成績在本次測試變得真實,

printf("ACTS"); 

執行。

2

同時檢查的IF部分,值n是 ''。因爲i++, 'ñ' 遞增和。所以,現在的價值n是。因此,儘管在進入ELSE一部分,作爲Ñ值爲時,它執行ELSE一部分。 而您正在獲取ELSE部分的輸出。

3

如果(0 ++)==>如果(0) 否則如果(1--)==>否則如果(1)

所以ACTS印刷

1

由於i是0。 ++i將評估前增加,i++增量後