-2

为什么输出有差异?

class Amie
{
   public static void main(String...a)
   {
       int i=5;
       i=++i/i++;
       SOP(i);
   }
}

输出=1

在 C ---

void main()
{
    int i=5;
    i=++i/i++;
    printf(i);
}

输出 = 2

4

1 回答 1

0

Java 标准确实规定了应该如何评估这样的表达式,并且只有 1 个可能的答案 - 1。

在 C 的情况下,标准不能保证可能的优化。您可以在其他编译器生成的可执行文件中收到 2 和 1。所以这是C中未定义的行为

于 2013-07-20T12:33:24.973 回答