为什么这个程序会产生意外的输出?

时间:2013-09-02 08:39:21

标签: c increment

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

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

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分: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 );