java - C、C++ 和 Java 中的不同结果相同的表达式。为什么?

标签 java c++ c

<分区>

Possible Duplicate:
Could anyone explain these undefined behaviors (i = i++ + ++i , i = i++, etc…)

int i = 10;
int n = i++*5*i;

输出

n 的值 = 550(在 Java 中) n = 500 的值(在 C 和 C++ 中)

为什么结果不一样?为什么不同?

最佳答案

在 Java 中,这是一个定义明确的操作。它将:

  1. 增加 i(现在是 11);
  2. 生成 i 的旧值 (10),因为您使用了 postfix increment operator ;
  3. 将其乘以 5 (10*5 = 50);
  4. 将其乘以 i 的当前值 (50*11 = 550);

在 C 和 C++ 中 this operation has undefined behaviour ,所以任何事情都有可能发生。如果可能发生任何事情,这将解释结果,无论结果是什么,以及它们对您是否有意义。

关于java - C、C++ 和 Java 中的不同结果相同的表达式。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7438860/

相关文章:

c - 如何在 C 中初始化 trie 数据结构并将子指针设置为 NULL?

java - jaxb 解码器将值读取为 0

java - 如何给JTextArea添加渐变背景?

c++ - C++中指针的地址

c++ - Win32 WndProc 作为类成员

c - 线程练习。交替打印两个不同线程的 id

java - 设置 Android 项目的标题

java - 在 JAX-WS 中定义绑定(bind)名称

C++ 写入文本文件时出现奇怪的字符

c++ - 在 C++ 中使用重复的宏