当前位置: 代码迷 >> C语言 >> [求助]编译器不同可能导致同一个程序运行结果不同?
  详细解决方案

[求助]编译器不同可能导致同一个程序运行结果不同?

热度:271   发布时间:2007-03-17 20:58:16.0
[求助]编译器不同可能导致同一个程序运行结果不同?
我在书上(谭好强c语言)找了个程序:
#include<stdio.h>
void main()
{
unsigned int a=65535;
int b=-2;
printf("a=%d,%o,%x,%u\n",a,a,a,a);
printf("b=%d,%o,%x,%u\n",b,b,b,b);
}
书上给的结果为a=-1,177777,ffff,65535
b=-2,177776,fffe,65534
可在vc++,tc上面出现了不同的结果,a=65535...
糊涂了,到底是怎么回事啊?高手能和我讲一下吗?谢谢!!!
搜索更多相关的解决方案: 运行  结果  编译  

----------------解决方案--------------------------------------------------------
TC 中的int是16位的
VC中的int是32位的
----------------解决方案--------------------------------------------------------
没学过C++,但是怀疑C++中int型是32位的
还是请会C++的来解释吧
----------------解决方案--------------------------------------------------------

这个根C++好像没有什么关系


----------------解决方案--------------------------------------------------------
VC++不就是C++的可视化编译器么?我想他们的数据类型应该是一样的吧?
我没学过C++,如果有不对的还要多指教
----------------解决方案--------------------------------------------------------

VC对C/C++的数据类型都是一样的,int 32位
你可以在VC中输入如下代码:
#include<iostream>
using namespace std;

int main()
{

cout<< sizeof(int);

getchar();
return 0;
}

他可以证明 int 是32位


----------------解决方案--------------------------------------------------------
unsigned int a=65535
在TC储存形式: 1111111111111111 (16位)
在VC++储存形式:0000000000000000 1111111111111111 (32位)
再想一下.
----------------解决方案--------------------------------------------------------
以下是引用dreamseeker在2007-3-17 20:58:16的发言:
我在书上(谭好强c语言)找了个程序:
#include<stdio.h>
void main()
{
unsigned int a=65535;
int b=-2;
printf("a=%d,%o,%x,%u\n",a,a,a,a);
printf("b=%d,%o,%x,%u\n",b,b,b,b);
}
书上给的结果为a=-1,177777,ffff,65535
b=-2,177776,fffe,65534
可在vc++,tc上面出现了不同的结果,a=65535...
糊涂了,到底是怎么回事啊?高手能和我讲一下吗?谢谢!!!

2楼说的没错

等你学到后边你就会发现还有一些区别

比如,TC的++和VC中的++是不一样的

还有VC的实际数组要比你定义的数组多32

比如你定义 int a[100], 可是你赋值的时候可以赋值到a[131]!

多了32位数组!
----------------解决方案--------------------------------------------------------
那就说明我的猜测是对的,我发3楼那贴时还没看到你二楼的话
----------------解决方案--------------------------------------------------------
vc++的运行结果是
a=65535,177777,ffff,65535
b=-2,37777777776,fffffffe,429467294
是这样的?
----------------解决方案--------------------------------------------------------

  相关解决方案