int main()
{
int x = 3, z ;
z = x / + + x ;
printf ("x = %dz = %d", x , z );
return 0;
}
我认为输出将是x=4 z=0
or x=4 z=1
。但我得到了x=3 z=1
。
++
尝试删除(增量运算符)之间的空格。使用++x
或++ x
。编译器可能将其解释为+(+x)
,即unary +
运算符。
删除两个加号之间的空格
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 );