我是不是应该相信vc6

超江 2012-09-29 09:28:32

#include<iostream>
using namespace std;
void main()
{
unsigned int i1;
unsigned short index1=0;
long ncount=0;
for(i1=0;i1<index1-1;i1++)
{
ncount++;
if(ncount>1000)break;
}
cout<<"first:"<<ncount<<endl;


unsigned int i2=6;
int ii;
int index2=-10;
ncount=0;
for(ii=0;ii<index2+i2;ii++)
{
ncount++;
if(ncount>1000)break;
}
cout<<"second:"<<ncount<<endl;

unsigned int i3;
unsigned int index3=0;
ncount=0;
for(i3=0;i3<index3-1;i3++)

{
ncount++;
if(ncount>1000)break;
}
cout<<"third:"<<ncount<<endl;

}


三个结果都是1001
书上说第一个结果是0
...全文
118 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2012-09-29
  • 打赏
  • 举报
回复
不要迷信书、考题、老师、回帖;
要迷信CPU、编译器、调试器、运行结果。
并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。
任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实!
iamnobody 2012-09-29
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

引用 1 楼 的回复:

为什么会是0呢。。。

书上说0<-1,我也觉得很奇怪。应该:无符号的表示负数是一个很大的整数
[/Quote]
错!
无符号无法表示负数, 用无符号来表示负数 其结果是不可知的!!
iamnobody 2012-09-29
  • 打赏
  • 举报
回复
你的书很垃圾, VC6 没有你的书那么垃圾,,,但是都是垃圾.

换<C++ primer> + 新版编译器.
左眼看到鬼 2012-09-29
  • 打赏
  • 举报
回复
编译器是对的,书上怎么写的,书上应该是写错了。
主要的是数据类型的隐式转换。
1.unsigned short 和int 转换成 unsigned int
2.unsigned int 和int 转换成 unsigned int
3.unsigned int 和int 转换成 unsigned int
个人理解。。。
超江 2012-09-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

为什么会是0呢。。。
[/Quote]
书上说0<-1,我也觉得很奇怪。应该:无符号的表示负数是一个很大的整数
rocktyt 2012-09-29
  • 打赏
  • 举报
回复
index1-1会变成65535
书错了
冷月清晖 2012-09-29
  • 打赏
  • 举报
回复
为什么会是0呢。。。

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧