C++与JAVA计算的结果不一致问题

hyjffq2006 2008-03-08 10:27:30
各位大侠,请帮忙解决一下。
C++的原代码:
#include "iostream.h"
void main()
{
int a,b;
b = 2;
a = 0;
a = b*b+++b*b;
cout<<a<<endl;
}
结果a的值是8
JAVA的原代码:
public class Cmain {

public static void main(String[] args) {
int b=2,a=0;
a=b*b+++b*b;
System.out.println("int b=2;");
System.out.println("a=b*b+++b*b");
System.out.println("a="+a);

}

}
结果a的值是13
请问各位大侠,同样的代码为什么结果会不一致啊!是什么原因产生的呢?
...全文
133 14 打赏 收藏 举报
写回复
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
egmkang 2008-03-08
  • 打赏
  • 举报
回复
你这个代码本深究不是可移植的,在不同的编译器下面的结果就回事不同的.
iambic 2008-03-08
  • 打赏
  • 举报
回复
Java的求值顺序是固定的,C++的不是。
eDis0n 2008-03-08
  • 打赏
  • 举报
回复
出这种题目的人心里有阴影吧 !+_+
0黄瓜0 2008-03-08
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 hyjffq2006 的回复:]
这是C++的一道考试题目,如果要验证正确性,那个才是正确的呢?是等于8还是等于13呢?
[/Quote]

直接写"其值不定,不同的编译器结果可能不同.BS出这种题的人".
ffzhzhll 2008-03-08
  • 打赏
  • 举报
回复
这样的代码有用么?
navyup 2008-03-08
  • 打赏
  • 举报
回复
一样就怪了
arong1234 2008-03-08
  • 打赏
  • 举报
回复
那只在你当前用的编译器正确,你多换几个编译器试试就知道其实8和13都不对
Vesslan_WangQi 2008-03-08
  • 打赏
  • 举报
回复
8正确哦

#include <iostream>
using namespace std;
int main()
{
int a,b;
b = 2;
a = 0;
a = b*b+++b*b;
cout<<a<<endl;
getchar();
}
arong1234 2008-03-08
  • 打赏
  • 举报
回复
不仅仅在Java/C++之间结果不一样,你换一个C++编译器,结果也可能不一样,原因就是你乱用++,这样的代码执行依赖于表达式内各个子表达式的计算顺序,而这个顺序并没有规定过

++/--运算符不要在复杂表达式中使用,如果一个表达式有超过1个运算符,就不要用++/--
hyjffq2006 2008-03-08
  • 打赏
  • 举报
回复
这是C++的一道考试题目,如果要验证正确性,那个才是正确的呢?是等于8还是等于13呢?
hastings 2008-03-08
  • 打赏
  • 举报
回复

int i=0;
int a=++++i+i+++i++;
hastings 2008-03-08
  • 打赏
  • 举报
回复
原则:同一表达式中,有++或--的变量不要出现超过1次;
你能说清楚下面的代码想做啥??
int a[4];
int i=0;
if(a[i++]<a[i])
do sth.
tuye14 2008-03-08
  • 打赏
  • 举报
回复
个人认为是对++的操作有所区别
healer_kx 2008-03-08
  • 打赏
  • 举报
回复
C++编译器和Java的编译器对++的处理逻辑是不一样的,它们生产了不同意思的代码。而且我觉得C++的看起来合理一点。
发帖
C++ 语言

6.3w+

社区成员

C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
帖子事件
创建了帖子
2008-03-08 10:27
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下