嵌入式之家

 找回密码
 现在注册

QQ登录

只需一步,快速开始

搜索
热搜: ARM cortex
查看: 7586|回复: 3

有问题,请教

[复制链接]

该用户从未签到

33

主题

97

帖子

885

积分

高级会员

Rank: 4

积分
885
发表于 2016-4-26 15:48:59 | 显示全部楼层 |阅读模式
程序002不理解,为什么当i减到0后就变为-1了;001就可以从255开始。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?现在注册

x
回复

使用道具 举报

该用户从未签到

55

主题

168

帖子

1767

积分

金牌会员

Rank: 6Rank: 6

积分
1767
发表于 2016-4-27 14:39:16 | 显示全部楼层
因为变量类型不一样,一个是int型变量,一个是char型!
回复 支持 反对

使用道具 举报

该用户从未签到

33

主题

97

帖子

885

积分

高级会员

Rank: 4

积分
885
 楼主| 发表于 2016-4-29 08:59:16 | 显示全部楼层
我知道了,int型变量减到0时再减就溢出了,所以表现为-1,而char型变量没有溢出,就从255开始。
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2020-6-18 22:00
  • 签到天数: 1 天

    [LV.1]初来乍到

    101

    主题

    192

    帖子

    1645

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    1645
    发表于 2016-5-6 23:10:42 | 显示全部楼层
    因为unsigned int类型的长度和%d的输出长度是一致的,所以unsiigned int 类型的0减1以后正好改变了符号位。所以显示为负数。而,unsigned char是8位的,0减1以后只是数据的低八位发生变化,并没有影响到符号位,说以输出为正数。
    对于32位的处理器 unsigned int 类型的0减1以后变为0xffffffff,用%d打印后显示为-1.
    而unsigned char 类型的0减1后变为 0xff(0x000000ff),用%d打印后显示为255.
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 现在注册

    本版积分规则

    QQ|Archiver|手机版|小黑屋|嵌入式之家 ( 京ICP备14038168号-1 )

    GMT+8, 2024-4-27 22:18 , Processed in 0.020908 second(s), 27 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

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