标题:putchar()函数 参数是 char 和 int 的区别,大家帮忙看看 0.0
只看楼主
幻世梵天
Rank: 1
等 级:新手上路
帖 子:23
专家分:4
注 册:2014-2-7
结帖率:100%
已结贴  问题点数:20 回复次数:12 
putchar()函数 参数是 char 和 int 的区别,大家帮忙看看 0.0
#include <stdio.h>
#include <stdlib.h>

int main()
{
   int  count;


 for(count = 14;count < 128;)
   putchar(count ++);



   return 0;
}
上面这个程序是可以运行的

#include <stdio.h>
#include <stdlib.h>

int main()
{
   char  count;//把count的类型改变了


 for(count = 14;count < 128;)
   putchar(count ++);



   return 0;
}
第二个程序可以运行,但是停不下来,大家不要试啊


我单独试了下面这个程序,也是可以的
#include <stdio.h>
#include <stdlib.h>

int main()
{
   int  char;
   char = 97;
   putchar(count);



   return 0;
}
这个也可以运行


为什么第二段程序会出现问题呢???
搜索更多相关主题的帖子: include return count 
2014-07-29 22:24
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
得分:10 
char count;//把count的类型改变了
for(count = 14;count < 128;)
你知道char类型的数值范围吗?

总有那身价贱的人给作业贴回复完整的代码
2014-07-29 22:26
幻世梵天
Rank: 1
等 级:新手上路
帖 子:23
专家分:4
注 册:2014-2-7
得分:0 
回复 2 楼 embed_xuel
是-128到127吧,
#include <stdio.h>
#include <stdlib.h>

int main()
{
   char count;


 /*for(count = 14;count < 128;)
   putchar(count ++);*/

   count = 128;
   putchar(count);



   return 0;
}
我运行这个程序没有问题呀,给count赋值14也可以的。
2014-07-29 22:35
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
得分:0 
你的for循环结束条件是什么?

总有那身价贱的人给作业贴回复完整的代码
2014-07-29 22:37
幻世梵天
Rank: 1
等 级:新手上路
帖 子:23
专家分:4
注 册:2014-2-7
得分:0 
回复 4 楼 embed_xuel
结束条件是 count < 128,当count = 128 的时候退出for循环,我还是没有发现问题呀...三楼那个程序我只是验证一下char的范围,发现在count = 128(应该是超范围的情况)但是程序还是可以输出一个字符的

[ 本帖最后由 幻世梵天 于 2014-7-29 22:50 编辑 ]
2014-07-29 22:47
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
得分:0 
回复 5 楼 幻世梵天
count可能等于128吗?for循环能结束吗?

总有那身价贱的人给作业贴回复完整的代码
2014-07-29 22:59
幻世梵天
Rank: 1
等 级:新手上路
帖 子:23
专家分:4
注 册:2014-2-7
得分:0 
回复 6 楼 embed_xuel
好像确实不能等于128,这是我修改后的程序
#include <stdio.h>
#include <stdlib.h>

int main()
{
   char count;


 for(count = 14;count < 127;)
   putchar(count ++);

   


   return 0;
}
可以正常运行了,哦,我懂了,三楼那个程序之所以可以输出一个字符是因为我把128赋值给count的时候,就相当于把-128赋值给了count,但是count的值实际上永远不等于128,是这样理解的么?
2014-07-29 23:17
vvvcuu
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:12
帖 子:353
专家分:1253
注 册:2014-4-22
得分:10 
默认情况下,char类型变量最大只能取值到127, 因此你的第二个程序的结束条件count<128永远为真,结果就是for循环会永远循环.

你把char改成unsigned char就能结束for循环了.

代码测试环境:  WinXP+C-Free5.0.
2014-07-29 23:18
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
得分:0 
你把count的值用%d打印出来就知道了

总有那身价贱的人给作业贴回复完整的代码
2014-07-29 23:19
幻世梵天
Rank: 1
等 级:新手上路
帖 子:23
专家分:4
注 册:2014-2-7
得分:0 
哦,知道了,谢谢啊
2014-07-29 23:20



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-434537-1-1.html




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

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