C语言陷入死循环的原因

代码如下:main(){charc=10;for(c=0;c<255;c++)/*当不进行无符号类型转换,程序会陷入死循环*/{if(!(c%16)){printf("\... 代码如下:

main()
{
char c=10;
for(c=0;c<255;c++)/*当不进行无符号类型转换,程序会陷入死循环*/
{
if(!(c%16))
{
printf("\n%02XH ",(usigned char)c/16);/*如果到了128 16进制高位是80,当用作无符号时 先 进 行扩展成FF80 */
}

printf("%c",c);// 语句1
}
printf(“%c”,147);//语句2

}
问题;本程序会陷入死循环,而且发出蜂鸣声,原因出在哪里?如果说是因为越界,为何语句2是可以正确执行的?或者说是在打印哪一个字符时出现了问题,谢谢
展开
 我来答
顶峰风光无限
2013-12-04 · TA获得超过683个赞
知道小有建树答主
回答量:856
采纳率:50%
帮助的人:405万
展开全部
char c=10;
for(c=0;c<255;c++)/*当不进行无符号类型转换,程序会陷入死循环*/

====================
知道不进行无符号类型转换,程序会陷入死循环了啊,却不知道原因。看下面:
这个c的最大正整数只能到127,c<255永远成立。情况是:c++到127之后变为了负数(称为算术溢出),一直加又从0开始了,所以死循环。
把 char c=10;

改为 int c;
赋值没用,因为for循环又重新赋值了。

至于出现蜂鸣声,是打印的字符中有一个(大概是4)代表beep,就是蜂鸣,结果就是打不出字符,出现蜂鸣声。
a525970280
2013-12-04 · TA获得超过1163个赞
知道小有建树答主
回答量:698
采纳率:40%
帮助的人:424万
展开全部
char 占一个字节,就是8bit,最大值
1111 1111 这就是它的二进制
而十进制 就是 255.
当它再加1后,会溢出,计算机会就其值从0开始计算。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
蓉雪球
2013-12-04 · TA获得超过8998个赞
知道大有可为答主
回答量:2846
采纳率:79%
帮助的人:715万
展开全部
if(!(c%16))

这里一句可以化为if(!(c%16)==1);
也就是if(c%16==0)
所以只有当c=0的时候才会结束啊,所以你的程序会出现死循环
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cykshi
推荐于2018-04-19 · TA获得超过167个赞
知道小有建树答主
回答量:153
采纳率:40%
帮助的人:74.6万
展开全部
char 有符号时取值范围是 -128到127 只有无符号时才是0-255

还有什么问题吗?
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
spring2009unit
2013-12-04
知道答主
回答量:44
采纳率:0%
帮助的人:13.6万
展开全部
格中怎样制成几行几列的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式