
c程序设计上的一道题,我昨天编了一下,发现输出的结果难以理解。
5个回答
展开全部
?一般就是那个变量的数值没有对应的字符表达,系统便用?代替。char型的范围是-128~127,现在c1=197,c2=198,而197、198都已超出char型的表达范围了,系统根据二进制数值11000101(197)和11000110(198)判断为负数(最高位是1),那么按补码规则,前者是-59,后者是-58。

2023-06-12 广告
单片机课程设计是针对《单片机原理及应用技术》课程的一项重要的动手实践活动。该课程设计的目标是让学生通过实际项目的开发,掌握单片机的开发技能,提高解决实际问题的能力,并且加深对单片机原理及应用技术的理解。课程设计的内容包括项目概述、项目要求、...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
展开全部
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
超过127的是扩展ascii,在普通CMD下是显示不出来的,需要将代码页调到437或936,至于-59则是因为普通的ascii是8位,超过127后最高位即为1,这个1会被视为符号位即负数
#include"stdio.h"
#include"windows.h"
int main(void)
{
SetConsoleOutputCP(437);
char a;
a = 197;
printf("a=%c",a);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这是因为所选择的数据类型不妥当造成的。
char能表示的范围是-128~+127
而197则是越界了的。
所以,实际存储的是:
197-256=-59
而所有的负数,以%c格式输出时,均为输出一个?号。
char能表示的范围是-128~+127
而197则是越界了的。
所以,实际存储的是:
197-256=-59
而所有的负数,以%c格式输出时,均为输出一个?号。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你好,
char 类型的取值范围是 -128 ~ 127;
char 占一个字节,8位;
你赋值 128,那么实际存的值就是-128,
你赋值 129,那么实际存的值就是-127,
因为首位是当做符号位的。
而字符只有0~127,一共128个,负数是没有对应的字符,所以显示为?,算是编译器的一种机制。
祝你生活愉快。
char 类型的取值范围是 -128 ~ 127;
char 占一个字节,8位;
你赋值 128,那么实际存的值就是-128,
你赋值 129,那么实际存的值就是-127,
因为首位是当做符号位的。
而字符只有0~127,一共128个,负数是没有对应的字符,所以显示为?,算是编译器的一种机制。
祝你生活愉快。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询