作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我不知道“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
'1'
和 '9'
之间的数字>在这些假设下 c - 'A'
会将大写字母从 'A'
映射到 0
,'B'
到 1
,'C'
到 2
,.... 'Z'
到 25
和 c-'1'+26
将数字 '1'
映射到 26
, '2 '
到 27
,.... '9'
到 34
。
问题是这些假设都不能保证是真的。
现实世界的字符集不是 ASCII(并且没有大写字母作为连续集)。
即使使用 ASCII(兼容)字符集,代码中也没有任何内容可以阻止调用者向函数传递超出映射有意义的输入范围的值。
编写更清晰易读的代码并不难,检查输入是否有效,执行(大概)预期的映射,并且即使使用不支持 ASCII(或兼容)的实现也能按预期运行字符集。我将把编写此类代码作为练习。
关于c++ - 不知道 "return ch[c-' A']”是怎么回事,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69202093/
我是一名优秀的程序员,十分优秀!