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。
++尝试删除(增量运算符)之间的空格。使用++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 );