gpt4 book ai didi

c++ - 不知道 "return ch[c-' A']”是怎么回事

转载 作者:行者123 更新时间:2023-12-02 16:06:50 25 4
gpt4 key购买 nike

我不知道“return ch[c-'A'];&return ch[c-'1'+26];”在做什么。以下是 uva401 - C++ 回文的一些代码。

char ch[36]={'A',' ',' ',' ','3',' ',' ','H','I','L',
' ','J','M',' ','O',' ',' ',' ','2','T',
'U','V','W','X','Y','5','1','S','E',' ',
'Z',' ',' ','8',' '};
char rev(char);

char rev(char c){
if (isalpha(c)){
return ch[c-'A'];//this line I don't know what it means.
} else {
return ch[c-'1'+26];//this line I don't know what it means.
}
}

最佳答案

我的猜测是,无论是谁编写了该函数 ASSUMED

  • ASCII 或兼容字符集,AND;
  • 输入是大写字母或 '1''9' 之间的数字>

在这些假设下 c - 'A' 会将大写字母从 'A' 映射到 0'B' 1'C'2,.... 'Z'25c-'1'+26 将数字 '1' 映射到 26, '2 '27,.... '9'34

问题是这些假设都不能保证是真的。

现实世界的字符集不是 ASCII(并且没有大写字母作为连续集)。

即使使用 ASCII(兼容)字符集,代码中也没有任何内容可以阻止调用者向函数传递超出映射有意义的输入范围的值。

编写更清晰易读的代码并不难,检查输入是否有效,执行(大概)预期的映射,并且即使使用不支持 ASCII(或兼容)的实现也能按预期运行字符集。我将把编写此类代码作为练习。

关于c++ - 不知道 "return ch[c-' A']”是怎么回事,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69202093/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com