为什么要将字符“A”与0x41进行比较?
我正在看一些C ++代码,并发现以下结构:
if('A' == 0x41) { // ... } else if('A' == 0xc1) { // ... } else { // ... }
我得到一个Visual Studio的警告说:
警告C4127条件expression式是不变的。
Visual Studio显然是对的 – 当然'A'被定义为0x41。 为什么作者写这个代码,考虑到三个分支中的两个是死代码?
0xc1
是A的EBCDIC
字符集编码。 作者正在testing这样一台机器。
乍一看可能看起来像是死代码,但'A'== 0x41并不总是会返回true ..
开发人员试图在这里做什么是懒惰地find什么编码是实现ASCII或EBCDIC的任何变种的机器
作为@理查德build议大写a映射到0xc1 国际 – 扩展二进制编码十进制交换代码请参阅下表中的2分支的if else …
另一个不同的值可以通过ASCIIfind例如:
他也可以做到:
if('p' == 0x70) { // ... } else if('p' == 0x97) { //... }