配套练习1

题一

#include<stdio.h>

int main()
{
    char a = -1;
    signed char b = -1;
    unsigned char c = -1;

    printf("a=%d,b=%d,c=%d", a, b, c);
    
    return 0;
}

运行的结果:
在这里插入图片描述

原因:

在VS2019编译器里,char默认为有符号的char类型,储存-1,就会打印-1
unsigned char类型可以储存的范围是0~255,因为整型数据在储存的时候是以补码的形式储存的,-1的补码是1111 1111,储存在无符号char类型时,最高位1不再是符号位,变成了有效位,对应的数时255


题二

#include <stdio.h>

int main()
{
    char a = -128;
    
    printf("%u\n",a);
    
    return 0;
}

运行的结果:
在这里插入图片描述

原因:

-128
补码:0xff ff ff 80
储存在char里面,截断低位一个字节里储存的数据0x80(补码)
在char里是-128
开始打印时会进行整型提升
0x80——>0xff ff ff 80
然后打印时%u把0xff ff ff 80按照无符号的形式打印,可看下面的图片
在这里插入图片描述


题三

#include <stdio.h>

int main()
{
    char a = 128;
    
    printf("%u\n",a);
    
    return 0;
}

运行的结果:
在这里插入图片描述

原因:

我们知道,char类型的变量里面数的范围在-128~127里
128的补码是0x00 00 00 80
储存在char里面,截断低位一个字节里储存的数据0x80(补码)
在char里是-128
开始打印时会进行整型提升
0x80——>0xff ff ff 80
然后打印时%u把0xff ff ff 80按照无符号的形式打印,可看下面的图片

在这里插入图片描述


题四

#include<stdio.h>

int main()
{
	unsigned int i;

	for (i = 9; i >= 0; i--)
	{
		printf("%u\n", i);
	}

	return 0;
}

运行的结果:
死循环

原因:

在无符号整型里面,数的范围在0~4294967295,都大于或等于0,始终满足循环条件i >= 0,所以死循环


题五

#include<stdio.h>

int main()
{
    char a[1000];
    int i;

    for (i = 0; i < 1000; i++)
    {
        a[i] = -1 - i;
    }

    printf("%d", strlen(a));

    return 0;
}

运行的结果:
在这里插入图片描述

原因:

strlen是一个计算字符串长度的函数,在识别到\0(对应的ASCII码值为0)时,停止继续向后识别,返回当前识别到的字符串长度,不包含\0
计算过程大概是这样的:
-1,-2…-128,127,126…1,0,-1…

在a[256]里放入了0,在strlen识别到这里时就停了下来,返回了255

题六

#include <stdio.h>

unsigned char i = 0;

int main()
{
    for(i = 0;i<=255;i++)
   {
        printf("hello world\n");
   }
    return 0;
}

运行的结果:
死循环

原因:

unsigned char类型可以储存的范围是0~255,始终满足循环条件i<=255,最终死循环

  • 8
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小奔同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值