为什么要将字符“A”与0x41进行比较?

我正在看一些C ++代码,并发现以下结构:

if('A' == 0x41) { // ... } else if('A' == 0xc1) { // ... } else { // ... } 

我得到一个Visual Studio的警告说:

警告C4127条件expression式是不变的。

Visual Studio显然是对的 – 当然'A'被定义为0x41。 为什么作者写这个代码,考虑到三个分支中的两个是死代码?

0xc1是A的EBCDIC字符集编码。 作者正在testing这样一台机器。

http://www.ibm.com/support/knowledgecenter/en/SSGH4D_15.1.3/com.ibm.xlf1513.aix.doc/language_ref/asciit.html

乍一看可能看起来像是死代码,但'A'== 0x41并不总是会返回true ..

开发人员试图在这里做什么是懒惰地find什么编码是实现ASCIIEBCDIC的任何变种的机器

作为@理查德build议大写a映射到0xc1 国际 – 扩展二进制编码十进制交换代码请参阅下表中的2分支的if else …

在这里输入图像说明

另一个不同的值可以通过ASCIIfind例如:

在这里输入图像说明

他也可以做​​到:

 if('p' == 0x70) { // ... } else if('p' == 0x97) { //... }