2014-01-21 114 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