鱼C论坛

 找回密码
 立即注册
查看: 1008|回复: 4

[已解决]s1e13第三题

[复制链接]
发表于 2020-2-29 14:58:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
没看懂小甲鱼的这个课后作业的代码
#include <stdio.h>

int main()
{
        signed char i = 0;

        while (i <= 0)
        {
                printf("%d", i);
                i = i - 1;
        }

        return 0;
}

为什么输出的是:
0-1-2-3-4-5-6-7-8-9-10-11-12-13-14-15-16-17-18-19-20-21-22-23-24-25-26-27-28-29-30-31-32-33-34-35-36-37-38-39-40-41-42-43-44-45-46-47-48-49-50-51-52-53-54-55-56-57-58-59-60-61-62-63-64-65-66-67-68-69-70-71-72-73-74-75-76-77-78-79-80-81-82-83-84-85-86-87-88-89-90-91-92-93-94-95-96-97-98-99-100-101-102-103-104-105-106-107-108-109-110-111-112-113-114-115-116-117-118-119-120-121-122-123-124-125-126-127-128
最佳答案
2020-2-29 15:29:17
signed  char i 定义的是一个8位的有符号数。数据范围是-128~127.
while 循环是从0 开始,向负无穷大打印。
但是由于i只有8位,当i=-128时,其二进制表示就是10000000b, i-1的值就会变成01111111,表示127.
所以当打印完-128后,i = i - 1 = 127 > 0; while就终止了啊。

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-29 15:04:30 | 显示全部楼层
应该是0-1=-2
-1-1=-2
-2-1=-3
...    -n
吧?
你的while里面的限制条件是个死循环,因为i已经是0了,那么小于等于0就永远为真,就会永远执行
望采纳
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-29 15:12:46 | 显示全部楼层
这个代码的意思是打印小于等于0的所有数字,由于char声明的i只占一个字节,打印的范围在127到-128之间,所以输出了0到-128
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-29 15:21:00 | 显示全部楼层
1.首先 char类型 是8个BIT位,即可以表达256种可能,即可以表示数字 0-255共256个。或者带上符号 +127到(负128)共256位。
2.对char一直循环减1就会从0减到付128再减1会变正127.(想象为一个圆圈)
3.所以while(i<0),减到-128后再减一次1  i==127>0。跳出循环。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-29 15:29:17 | 显示全部楼层    本楼为最佳答案   
signed  char i 定义的是一个8位的有符号数。数据范围是-128~127.
while 循环是从0 开始,向负无穷大打印。
但是由于i只有8位,当i=-128时,其二进制表示就是10000000b, i-1的值就会变成01111111,表示127.
所以当打印完-128后,i = i - 1 = 127 > 0; while就终止了啊。

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-16 00:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表