这段程序能停止吗?unsigned int 的诱惑

john 2010-10-02 08:13:18
include <stdio.h>
#include <stdlib.h>

int main()
{
unsigned int i;

for(i=5; i>=0; i--)
{
printf("This is %d !\n",i);
getch();
}
return 0;
}

嘿嘿!试一试吧!

结果是:

This is 5 !
This is 4 !
This is 3 !
This is 2 !
This is 1 !
This is 0 !
This is -1 !
This is -2 !
This is -3 !
This is -4 !

... ...

无符号的整数他永远是无符号?


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/JohnPhan/archive/2010/08/03/5785511.aspx
...全文
92 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
canshui 2010-10-03
  • 打赏
  • 举报
回复
计算机是不认识什么类型的,例如int, char,这些类型针对与,程序员来说的才有意义的。

你把那些整数写成二进制的形式,也就是在内纯中的样子。这样在看看还有问题不
lly212 2010-10-03
  • 打赏
  • 举报
回复
ctrl+c / ctrl +d
zff869030831 2010-10-02
  • 打赏
  • 举报
回复
话说LZ我用的编译器可以判断出这个条件是永远为真,给出警告!
  • 打赏
  • 举报
回复
其实i一直是无符号的,但是经过printf("This is %d !\n",i);里面的"%d"这个,进行了转换,所以看到的是有负数出现的.如果改成printf("This is %u !\n",i);就可以了
能正常显示了,无符号>=0,必然无限循环,希望对lz有用
  • 打赏
  • 举报
回复
其实是printf("This is %d !\n",i);这句的问题....

#include <iostream>
#include <conio.h>
using namespace std;


int main(int argc, char* argv[])
{
unsigned int i;

for(i=5; i>=0; i--)
{
cout<<i<<endl;
getch();

}
return 0;
}

漫步者、 2010-10-02
  • 打赏
  • 举报
回复
[Quote=引用楼主 johnphan 的回复:]
include <stdio.h>
#include <stdlib.h>

int main()
{
unsigned int i;

for(i=5; i>=0; i--)
{
printf("This is %d !\n",i);
getch();
}
return 0;
}

嘿嘿!试一试吧!

结果是:

This is……
[/Quote]无符号的在机器中都是0、1表示,输出都以补码的形式输出的。
jznhljg 2010-10-02
  • 打赏
  • 举报
回复
what's your point?
arong1234 2010-10-02
  • 打赏
  • 举报
回复
如果不是这样还叫什么“无符号”,这不是无符号的定义么?[Quote=引用楼主 johnphan 的回复:]
include <stdio.h>
#include <stdlib.h>

int main()
{
unsigned int i;

for(i=5; i>=0; i--)
{
printf("This is %d !\n",i);
getch();
}
return 0;
}

嘿嘿!试一试吧!

结果是:

This is……
[/Quote]
  • 打赏
  • 举报
回复
停不了的。。
john 2010-10-02
  • 打赏
  • 举报
回复
...
This is 1 !
This is 0 !
This is 255 !
This is 254 !
...

说明了问题的本质。 谢
cmlr_ 2010-10-02
  • 打赏
  • 举报
回复
是.....
我用usigned char试了试,贴出部分结果
This is 26 !
This is 25 !
This is 24 !
This is 23 !
This is 22 !
This is 21 !
This is 20 !
This is 19 !
This is 18 !
This is 17 !
This is 16 !
This is 15 !
This is 14 !
This is 13 !
This is 12 !
This is 11 !
This is 10 !
This is 9 !
This is 8 !
This is 7 !
This is 6 !
This is 5 !
This is 4 !
This is 3 !
This is 2 !
This is 1 !
This is 0 !
This is 255 !
This is 254 !
This is 253 !
This is 252 !
This is 251 !
This is 250 !
This is 249 !
This is 248 !
This is 247 !
This is 246 !
This is 245 !
This is 244 !
This is 243 !
This is 242 !
This is 241 !
This is 240 !
This is 239 !
This is 238 !
This is 237 !
This is 236 !
This is 235 !
This is 234 !
This is 233 !
This is 232 !
的确如此,因为无符号数字永远不会小于0,所以就不断循环下去
ayw215 2010-10-02
  • 打赏
  • 举报
回复
lz加油吧!

69,371

社区成员

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

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