编译原理

刚看C/C++群里有人问一个程序的输出结果,代码如下:

#include <iostream>
using namespace std;
void main()
{
int a=4 ;
a=(a++)+(++a)+(a--)+(--a);
cout<<a;
}

隐约的看了下,以为输出结果是20,用VC++编译了一下,结果却是19,然后其他编译器的结果也都不同。

JAVA?? :20
VC++?? :19
VS2005?:16

为什么会结果不同呢,这就设计到编译原理的问题了,每种编译器的编译原理各不相同,所以导致结果也不同。

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.