c语言入门基础题!
#include<stdio.h>#include<windows.h>intmain(){charc1,c2;SetConsoleOutputCP(437);//设置A...
#include <stdio.h>
#include <windows.h>
int main()
{
char c1,c2;
SetConsoleOutputCP(437); //设置ASCII 码扩展字符集输出时使用的代码页
c1=42;
c2=43;
printf("c1=%c,c2=%c\n",c1,c2);
printf("c1=%d,c2=%d\n",c1,c2);
return 0;
}
(1)运行时会输出什么信息?
(2)如果将程序中c1,c2的赋值改为
c1=242;
c2=243;
运行时会输出什么信息?
(3)如果将程序中c1,c2的定义改为
int c1,c2;
上述(1)(2)两种情况下运行时会输出什么信息? 展开
#include <windows.h>
int main()
{
char c1,c2;
SetConsoleOutputCP(437); //设置ASCII 码扩展字符集输出时使用的代码页
c1=42;
c2=43;
printf("c1=%c,c2=%c\n",c1,c2);
printf("c1=%d,c2=%d\n",c1,c2);
return 0;
}
(1)运行时会输出什么信息?
(2)如果将程序中c1,c2的赋值改为
c1=242;
c2=243;
运行时会输出什么信息?
(3)如果将程序中c1,c2的定义改为
int c1,c2;
上述(1)(2)两种情况下运行时会输出什么信息? 展开
1个回答
展开全部
答:(1) 因为42、43对应的ASCII码为*、+,所以用%c输出是:*、+;因为42、43二进制数8位表示为:0010 1010、0010 1011,没有超过8位可表示的最大正数127,所以用%d输出是42、43。
(2) 因为242、243对应的扩展ASCII码为≥、≤,所以用%c输出是:≥、≤;因为242、243二进制数8位表示为:1111 0010、1111 0011,超过8位可表示的最大正数127,所以用%d输出时将其视为负数,1111 0010、1111 0011分别为-14、-13,故输出为:-14、-13。
(3) 当程序中c1,c2的定义改为int c1,c2;时。(1)的情况与原来相同;
(2)输出对应的扩展ASCII码仍然为≥、≤;因为242、243都在int类型数据的正数范围内,所以用%d输出时就是:242、243。
(2) 因为242、243对应的扩展ASCII码为≥、≤,所以用%c输出是:≥、≤;因为242、243二进制数8位表示为:1111 0010、1111 0011,超过8位可表示的最大正数127,所以用%d输出时将其视为负数,1111 0010、1111 0011分别为-14、-13,故输出为:-14、-13。
(3) 当程序中c1,c2的定义改为int c1,c2;时。(1)的情况与原来相同;
(2)输出对应的扩展ASCII码仍然为≥、≤;因为242、243都在int类型数据的正数范围内,所以用%d输出时就是:242、243。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询