c程序设计上的一道题,我昨天编了一下,发现输出的结果难以理解。
5个回答
展开全部
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
超过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个,负数是没有对应的字符,所以显示为?,算是编译器的一种机制。
祝你生活愉快。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询