2014-01-21 115 views
-1

如果遞增遞減在C

void main() 
{ 
    int i=2,j=4; 
    i=+++i+j; //is not an error 
    i=---i+j; // is a L-value required error.. 
} 

任何人都可以請詳細多的遞增和遞減背後的概念解釋..

+2

...請解釋編寫不可讀代碼的概念 –

+0

您打算如何處理這些多個增量和減量? – ccozad

+0

對編寫不可讀代碼感到抱歉...但你能解釋我在這個問題的上下文嗎 –

回答

0

我覺得解析器將無法解析它在它想要的格式它是。嘗試使用下面的括號。它會工作。

i = - ( - i)+ j;

+0

問題是第一個工作的'-'運算符和'+'運算符有什麼不同。 – woolstar

+0

確切地先生。請您解釋我爲什麼第一個工作.. –

+0

在這兩種情況下,程序展品未定義的行爲和輸出可能是任何東西。 1. main應該返回int not void。在C中返回void是一個擴展,並不是所有的編譯器都支持使代碼不可移植,在C++中它只是未定義的行爲。 2.這兩種情況都會破壞指定變量的標準部分,在這些訪問中至少有一個要更改變量值的序列點之間可能不會被訪問多次。該標準規定,在這種情況下,行爲將是不確定的。 我建議你看網頁上的序列點和未定義的行爲。 – Saurabh