首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >字符与ASCII码的关系?

字符与ASCII码的关系?
EN

Stack Overflow用户
提问于 2017-07-14 13:53:09
回答 4查看 3.9K关注 0票数 0

我的计算机科学老师告诉我们,要声明哪种数据类型取决于您需要的变量的值的大小。然后,他演示了一个字符加减一个数字以输出一个不同的字符。我记得他说过这和ASCII密码有关。有人能更具体和清楚地解释这一点吗?那么,char是一个数字(因为我们可以用它来计算)还是一个字符,还是两者兼而有之呢?我们能打印出一个字符后面的数字吗?怎么打印?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-07-14 13:59:24

那么,char是一个数字还是一个字符,还是两者兼而有之呢?

两者都有。它是一个整数,但该整数值表示一个字符,正如系统的字符编码所描述的那样。您的计算机科学老师使用的系统的字符编码恰好是ASCII。

我们能打印出一个字符后面的数字吗?怎么打印?

C++ (过去常被标记的问题):

字符输出流(如std::cout)的行为是在插入char类型的整数时打印表示的字符。但是,所有其他整数类型的行为是打印整数值。因此,您可以通过将char转换为另一个整数类型来打印它的整数值:

代码语言:javascript
复制
std::cout << (unsigned)'c';

C:

没有模板化的输出流,因此不需要显式转换到另一个整数(除了签名)。您需要的是正确的printf格式说明符。

代码语言:javascript
复制
printf("%hhu", (unsigned char)'c');

hh表示大小为char的整数,u用于无符号表示,因为您可能对无符号表示感兴趣。

票数 3
EN

Stack Overflow用户

发布于 2017-07-14 13:59:32

char可以容纳一个数字,它是计算机上可用的最小整数类型,并且必须至少有8位。它是字节的同义词。

它的典型用途是存储字符的代码。计算机只能处理数字,因此,为了表示字符,使用数字。当然,你必须同意哪个数字意味着哪个字符。

C不需要特定的字符编码,但现在大多数系统都使用ASCII的超集(这是一种非常老的仅使用7位的编码),例如UTF-8。

因此,如果您有一个包含一个字符的char,并且添加或减去一些值,结果将是另一个恰好是另一个字符的代码的数字。

在ASCII中,字符0-9a-zA-Z具有相邻的代码点,因此,通过向A添加2,结果将是C

我们能把一个字符后面的号码打印出来吗?

当然了。这仅仅取决于您是将char中的值解释为只是一个数字还是一个字符的代码。例如用printf

代码语言:javascript
复制
printf("%c\n", 'A');                   // prints the character
printf("%hhu\n", (unsigned char)'A');  // prints the number of the code

之所以需要对(unsigned char)进行强制转换,是因为允许对char进行签名或无签名,因此我们希望在这里将其视为无签名。

票数 3
EN

Stack Overflow用户

发布于 2017-07-14 14:00:51

char只占用一个字节。在具有8位字节的系统上,这给出了一个范围(假设char是有符号的) -128到127。您可以如下所示打印此值:

代码语言:javascript
复制
char a = 65;
printf("a=%d\n", a);

输出:

代码语言:javascript
复制
65

%d格式说明符将其参数打印为十进制整数。另一方面,如果使用%c格式说明符,则会打印与该值关联的字符。在使用ASCII的系统上,这意味着它打印与该数字相关联的ASCII字符:

代码语言:javascript
复制
char a = 65;
printf("a=%c\n", a);

输出:

代码语言:javascript
复制
A

在这里,字符A是打印的,因为65是A的ASCII代码。

您可以对这些数字执行算术,并打印结果代码的字符:

代码语言:javascript
复制
char a = 65;
printf("a=%c\n", a);
a = a + 1;
printf("a=%c\n", a);

输出:

代码语言:javascript
复制
A
B

在本例中,我们首先打印A,这是代码65的ASCII字符。然后我们加上1,给我们66个。然后打印66的ASCII字符,即B

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45104764

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档