一个小程序 但是很烦人

jdwq33 2012-08-03 09:39:05
#include <stdio.h>

void text(size_t index) //这个地方不知道是什么意思
{
int i = 0;

while(index > 0) //为什么这个循环老不退出呢?
{
i++;
printf("i = %d\n", i);
printf("index = %d\n", index); //打印的时候index居然是负数,但是在调试的时候它的值是很大的
index--; //不懂这是为什么?????
}

return ;
}

int main()
{
int i = -1;

text(i);

return 0;
}

大师们麻烦您们为我解答了,小弟拜谢!!!
...全文
659 32 打赏 收藏 转发到动态 举报
写回复
用AI写文章
32 条回复
切换为时间正序
请发表友善的回复…
发表回复
jdwq33 2012-08-06
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 的回复:]
两个printf涵数影响了运行速度,如果把两个printf涵数放到循环体外,相信很快会退出循环。
[/Quote]printf函数为什么会影响运行速度呢?
暗夜微凉 2012-08-06
  • 打赏
  • 举报
回复
执行了两分钟了还没结束!死循环???
氰客 2012-08-06
  • 打赏
  • 举报
回复
谁测试了这个程序能跑多久、?
jdwq33 2012-08-06
  • 打赏
  • 举报
回复
[Quote=引用 28 楼 的回复:]

不太清楚,好像输出时,数据要进行二进制到ASCII码的转换,比较费时。
[/Quote]我同意这种说话,各位大师同意吗?呵呵
湖仙 2012-08-06
  • 打赏
  • 举报
回复
已经说得很明白了,同时也复习下
c090869 2012-08-06
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 的回复:]

引用 21 楼 的回复:
两个printf涵数影响了运行速度,如果把两个printf涵数放到循环体外,相信很快会退出循环。
printf函数为什么会影响运行速度呢?
[/Quote]
不太清楚,好像输出时,数据要进行二进制到ASCII码的转换,比较费时。
willYanwill 2012-08-06
  • 打赏
  • 举报
回复
貌似都说的挺好
willYanwill 2012-08-06
  • 打赏
  • 举报
回复
可能是数比较大,程序就崩了。。。不是死循环,有限的东西无论多大都不会是无限的,但会给人无限的感觉
韦西 2012-08-06
  • 打赏
  • 举报
回复
while(index > 0)
这样写,就是想一直循环下去的吖~~
c090869 2012-08-05
  • 打赏
  • 举报
回复
两个printf涵数影响了运行速度,如果把两个printf涵数放到循环体外,相信很快会退出循环。
tian_waifieitianz 2012-08-05
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 的回复:]
两个printf涵数影响了运行速度,如果把两个printf涵数放到循环体外,相信很快会退出循环。
[/Quote]

库函数 printf 的调用影响了运行速度

在printf 库函数中是不是调用了系统调用? 征求答案。。。。
guorongshan 2012-08-05
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

1. szie_t 是标准C库中定义的,在32为系统中表示unsigned int。
2. 在将i=-1传入text()的时候,-1转换成unsigned int后的值是4294967295。
所以index = 4294967295。故会循环很多次。
3. 输出负号,是因为你的输出格式是%d,要求带符号。
[/Quote]

up
flyingZippo 2012-08-04
  • 打赏
  • 举报
回复
printf("%f",(double)10/3);
cbzjzsb123 2012-08-03
  • 打赏
  • 举报
回复
活到老学到老
wufangna 2012-08-03
  • 打赏
  • 举报
回复
负数在内存中是以补码的形式存储的-1的补码为0xFFFFFFFF,szie_t 是标准C库中定义的,在32为系统中表示unsigned int。在将i=-1传入text()的时候,-1转换成unsigned int后的值是4294967295,所以循环多次,但总会退出循环。
输出格式是%d,要求为有符号数据所以每次输出的index总是负数
红红火火用 2012-08-03
  • 打赏
  • 举报
回复
活到老学到老
baichi4141 2012-08-03
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

但是那个index不是一直大于0的吧???那不是死循环??
[/Quote]
index--,减到0就退出了

楼主你该复习基础知识
内存中是没有类型的二进制数据,对变量的操作依赖于你定义的它的类型
同样是0xFFFFFFFF,如果你定义unsigned int,那它就是4294967295,如果你只定义int,那么它就是-1

若要打比方,就是计算机能够识别带有数字的图片,但你非把一张你觉得是6的图片倒着放进它的识别窗口,就别怪它识别成9了
jdwq33 2012-08-03
  • 打赏
  • 举报
回复
但是那个index不是一直大于0的吧???那不是死循环??
jdwq33 2012-08-03
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]
测试一下是否可以发贴
[/Quote]这位大师是什么意思啊??
zhusizhi007 2012-08-03
  • 打赏
  • 举报
回复
测试一下是否可以发贴
加载更多回复(11)

69,373

社区成员

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

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