| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1261 人关注过本帖
标题:[求助]编译器不同可能导致同一个程序运行结果不同?
只看楼主 加入收藏
dreamseeker
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2007-3-9
收藏
 问题点数:0 回复次数:11 
[求助]编译器不同可能导致同一个程序运行结果不同?
我在书上(谭好强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...
糊涂了,到底是怎么回事啊?高手能和我讲一下吗?谢谢!!!
搜索更多相关主题的帖子: 运行 结果 编译 
2007-03-17 20:58
zhaoyg
Rank: 1
等 级:新手上路
帖 子:328
专家分:0
注 册:2006-8-28
收藏
得分:0 
TC 中的int是16位的
VC中的int是32位的

麻雀飞上枝头变凤凰,而菜鸟的我飞上枝头却感冒了,为什么我的脑袋如此的不管用呢。
2007-03-17 21:04
moonwalker
Rank: 1
等 级:新手上路
威 望:1
帖 子:909
专家分:2
注 册:2007-3-2
收藏
得分:0 
没学过C++,但是怀疑C++中int型是32位的
还是请会C++的来解释吧

“视频教程网”免费提供教学资源
C不限制你的自由!
条件是自己承担滥用自由的恶果!
2007-03-17 21:07
zhaoyg
Rank: 1
等 级:新手上路
帖 子:328
专家分:0
注 册:2006-8-28
收藏
得分:0 

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


麻雀飞上枝头变凤凰,而菜鸟的我飞上枝头却感冒了,为什么我的脑袋如此的不管用呢。
2007-03-17 21:13
moonwalker
Rank: 1
等 级:新手上路
威 望:1
帖 子:909
专家分:2
注 册:2007-3-2
收藏
得分:0 
VC++不就是C++的可视化编译器么?我想他们的数据类型应该是一样的吧?
我没学过C++,如果有不对的还要多指教

“视频教程网”免费提供教学资源
C不限制你的自由!
条件是自己承担滥用自由的恶果!
2007-03-17 21:17
zhaoyg
Rank: 1
等 级:新手上路
帖 子:328
专家分:0
注 册:2006-8-28
收藏
得分:0 

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

int main()
{

cout<< sizeof(int);

getchar();
return 0;
}

他可以证明 int 是32位


麻雀飞上枝头变凤凰,而菜鸟的我飞上枝头却感冒了,为什么我的脑袋如此的不管用呢。
2007-03-17 21:26
neverTheSame
Rank: 3Rank: 3
来 自:江西农业大学
等 级:新手上路
威 望:9
帖 子:1511
专家分:0
注 册:2006-11-24
收藏
得分:0 
unsigned int a=65535
在TC储存形式: 1111111111111111 (16位)
在VC++储存形式:0000000000000000 1111111111111111 (32位)
再想一下.

wap酷禾网(http://wap.),提供免费的、优质的、快捷的wap资源下载服务。
2007-03-17 21:29
福尔摩斯
Rank: 5Rank: 5
等 级:贵宾
威 望:12
帖 子:4011
专家分:370
注 册:2006-8-15
收藏
得分:0 
以下是引用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位数组!


自我放逐。。。
2007-03-17 21:29
moonwalker
Rank: 1
等 级:新手上路
威 望:1
帖 子:909
专家分:2
注 册:2007-3-2
收藏
得分:0 
那就说明我的猜测是对的,我发3楼那贴时还没看到你二楼的话

“视频教程网”免费提供教学资源
C不限制你的自由!
条件是自己承担滥用自由的恶果!
2007-03-17 21:30
dreamseeker
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2007-3-9
收藏
得分:0 
vc++的运行结果是
a=65535,177777,ffff,65535
b=-2,37777777776,fffffffe,429467294
是这样的?

C语言初学者,请多多关照
2007-03-17 21:32
快速回复:[求助]编译器不同可能导致同一个程序运行结果不同?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015937 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved