跳至主要內容

Lab09-字符转ASCII码

AI悦创原创C 练习C 练习大约 2 分钟...约 725 字

描述

BoBo 教 KiKi 字符常量或字符变量表示的字符在内存中以 ASCII 码形式存储。BoBo 出了一个问题给 KiKi,输入一个字符,输出该字符相应的 ASCII 码。

输入描述:

一行,一个字符。

输出描述:

一行,输出输入字符对应的ASCII码。

示例1

输入:

c

复制

输出:

99
答案
#include <stdio.h>

int main() {
    char c = 0;
    scanf("%c", &c);
    printf("%hhd", c);
    return 0;
}

我看好多人有一些细节没有说道,我来说下。img

在输出显示的时候,数据的长度对应上是很重要的,多了会浪费不必要的空间,少了会导致数据输出显示异常。

就比如这题的 char 型变量,它是在这个编译器里面是一个字节的长度,也就是 8 位二进制。

%d 是指的 int 类型的转换规则,也就是 4 个字节,想要正确的显示char类型的话需要在 % 后面,d 的前面加上一个长度指示符。

那有的人就要问了,这不是题目都过了,怎么还不对了呢?

这是因为 printf 这个函数会将int类型等级以下的类型自动转换为 int 类型,如会自动把 char、short 转换为 int 类型,所以输出的依旧是正确的。

但是写程序就是要严谨,不然程序庞大后会有很多问题出现,并且 scanf 函数不存在低等级的类型自动转换为int型,如果还像 printf 那样使用有时候就会出现问题。

这里写出转换规则中长度指示符对应的类型等级 %hhd = char%hd = short%d = int%ld = long%lld = long long

hh、h、l、ll 这几个就是长度指示符。

#include<stdio.h>

int main() {
    char i = 0;
    scanf("%c", &i);
    printf("%d\n", i);
    return 0;
}
公众号:AI悦创【二维码】

AI悦创·编程一对一

AI悦创·推出辅导班啦,包括「Python 语言辅导班、C++ 辅导班、java 辅导班、算法/数据结构辅导班、少儿编程、pygame 游戏开发、Linux、Web、Sql」,全部都是一对一教学:一对一辅导 + 一对一答疑 + 布置作业 + 项目实践等。当然,还有线下线上摄影课程、Photoshop、Premiere 一对一教学、QQ、微信在线,随时响应!微信:Jiabcdefh

C++ 信息奥赛题解,长期更新!长期招收一对一中小学信息奥赛集训,莆田、厦门地区有机会线下上门,其他地区线上。微信:Jiabcdefh

方法一:QQopen in new window

方法二:微信:Jiabcdefh

上次编辑于:
贡献者: AndersonHJB
你认为这篇文章怎么样?
  • 0
  • 0
  • 0
  • 0
  • 0
  • 0
评论
  • 按正序
  • 按倒序
  • 按热度