遵循Stroustrup的原则书,在冬假期间学习一些C ++。我很难理解为什么以下示例(从另一个stackoverflow线程中取出)输出一个整数值97.
最初的挑战是这样的:使用循环写出一个带有相应整数值的字符表。
#include <iostream>
using namespace std;
int main()
{
for (char c = 'a'; c <= 'z'; ++c) {
cout << "letter " << c << " has value " << int(c) << std::endl;
}
return 0;
}
对我来说,(新手)我将其读作如下:char c ='a'。如果'a'小于或等于'z',则将字母增加1.整数值来自何处?他们为什么从97年开始呢?
答案 0 :(得分:4)
这是'a'
的ASCII值,看看它们都会查看http://www.asciitable.com/。计算机在内部存储数字97时,它想要存储该字符。
请注意,ASCII仅为7位,因此处理值0-127,高于此值的所有内容都需要扩展的ASCII或某种形式的Unicode,这些都会变得复杂。
答案 1 :(得分:2)
有问题的整数值是ASCII,ISO-8859- *和Unicode,以及所讨论字母的各种其他代码。特别是,97(十进制)是小写拉丁语&#39; a&#39;的代码。在所有这些编码中。
但请注意,虽然这些特定代码很常见,但它们不是通用,而C ++不需要使用它们中的任何一个。例如,EBCDIC使用不同的代码,并且可以构造使用EBCDIC的符合C ++的实现。在这样的实现中,您的程序将产生不同的输出。
答案 2 :(得分:1)
整数值来自哪里?他们为什么从97年开始呢?
它来自ASCII 7位编码。请参阅the ASCII table中的字符a
。