2
int main()
{
    int x = 3, z ;
    z = x / + + x ;
    printf ("x = %dz = %d", x , z );
    return 0;
}

我认为输出将是x=4 z=0or x=4 z=1。但我得到了x=3 z=1

4

2 回答 2

3

++尝试删除(增量运算符)之间的空格。使用++x++ x。编译器可能将其解释为+(+x),即unary +运算符。

于 2013-09-02T08:42:42.773 回答
1

删除两个加号之间的空格

z = x / ++ x ;  //will gives z value as 1 always  

//x=-1时除外(浮点异常)

这可能有未定义的行为,因为缺少序列点。

如果你可以这样尝试,而不是上面。

int x = 3, z=3;
printf ("x = %dz = %d", x , z );

z/=(++x); // z/=++x; is also same.  
printf ("x = %dz = %d", x , z );
于 2013-09-02T08:43:04.960 回答