int main()
{
int x = 3, z ;
z = x / + + x ;
printf ("x = %dz = %d", x , z );
return 0;
}
我认为输出会是x=4 z=0
或x=4 z=1
。但我得到了x=3 z=1
。
答案 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 );