【发布时间】:2020-04-15 19:22:05
【问题描述】:
struct Node{
bool isTerminal_;
char ch_;
Node* children_[26];
Node(char c='\0'){
isTerminal_ = false;
ch_=c;
for(int i = 0 ; i < 26; i++){
children_[i]=nullptr;
}
}
//given a lower case alphabetic character ch, returns the associated index 'a'-> 0, 'b'->1....
int getIndex(char c){
if(c=='\0'){
return 0;
}
return c -'a';
}
};
找到了这段代码,但我不明白“return c-'a';”是怎么回事作品。它应该给出一个字母的索引,但是 char - char 是如何工作的?
【问题讨论】:
-
查看ASCII table 将帮助您理解。如果
c = 'z',你有'z' (122) - 'a' (97) = 25 -
char只是另一种整数。所以 char - char 只是整数减法。 -
好的,谢谢 :) 链接帮助很大
-
char是数字类型。代码假设c代表a..z之间的一个字母。在 ASCII 中,字母是连续的,其中a是 97,b是 98,等等,所以从ch='a'中减去'a'返回 0,从ch='b'中减去'a'返回 1,以此类推。 -
评论者和发布答案的人很容易采用 ASCII 编码,这是一种奇思妙想。问题中的任何内容都无法确保它。请注意,那里有不止一种编码,特别是有一种 EBDIC 编码。而且 C++ 并没有与 ASCII 结合。