int v=3;
int s=6 + (--v);
int d= --v + --v/s++*v++ + ++s%v--;
能告诉我如何解决这个问题的人吗? 最终我得到9%0;
但是编译器将d的值显示为1
有人可以告诉我我哪里做错了
答案 0 :(得分:2)
对于 Java ,据我所知,d = 1
的值应该正确:
++x
⇒首先增加,然后使用变量x++
⇒首先使用,然后递增变量所以我得到了
int v=3;
int s=6 + (--v); // s=8, v=2
int d = --v // 1
+ --v // 0
/ s++ // 8, s=9
* v++ // 0, v=1
+ ++s // 10
% v--; // 0
⇒d = 1 + 0 / 8 * 0 + 10 % 0
根据* / %
的运算符优先级
d = 1 + 0 + 0
编辑2:请注意,其他语言可能具有其他评估规则(如@AdaRaider在评论中所述,另请参见我的C ++示例)。