鱼C论坛

 找回密码
 立即注册
查看: 2622|回复: 5

c语言

[复制链接]
发表于 2019-10-13 18:59:49 | 显示全部楼层 |阅读模式

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

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

x
#include<stdio.h>

void main()
{
   char a;
   a=129;
   
   
        printf("%d",a);
}
结果是-127,为什么不是129,char不是8位可以存储129吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-10-13 19:05:39 | 显示全部楼层
char 定义字符变量。怎么能输出整数呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-13 19:17:06 | 显示全部楼层
楼主。
signed char 8位存储范围为 -128 ~ 127
范围计算过程为补码形式,最高位为符号位。
1 1111111 : 2^7 =128  最高符号位为1 所以最小为-128 ,0 1111111:2^7 = 128-1 = 127 最高符号位为0所以最大为127。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-13 19:20:06 | 显示全部楼层
本帖最后由 jackz007 于 2019-10-13 19:28 编辑

      char 的数值范围是 -128 ~ 127,对应十六进制 0x00 ~ 0xff,其中,0x00 ~ 0x7f 对应于十进制 0 ~ 127,0x80 ~ 0xff 对应于十进制 -128 ~ -1,楼主赋值的整型数 129 表达成 char 就是 0x81,而 char 类型的 0x81 就是 -127,除非楼主用 unsigned char a 来定义变量 a。因为 unsigned char 可表达数值的范围是 0 ~ 255,涵盖了数值 129。
#include <stdio.h>

main()
{
        unsigned char a = 129 ;
        printf("%d\n" , a)    ;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-13 19:21:18 | 显示全部楼层
5281 发表于 2019-10-13 19:05
char 定义字符变量。怎么能输出整数呢?

%d会输出该字符对应的编码
具体可以看看ASCII表
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-13 19:26:43 | 显示全部楼层
5281 发表于 2019-10-13 19:05
char 定义字符变量。怎么能输出整数呢?

不好意思 看错了。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-4 15:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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