Je cherchais du code C ++ et j’ai trouvé la construction suivante:
if('A' == 0x41) { // ... } else if('A' == 0xc1) { // ... } else { // ... }
Je reçois un avertissement Visual Studio disant:
Avertissement L’expression conditionnelle C4127 est constante.
Visual Studio a clairement raison: «A» est défini comme étant 0x41. Pourquoi l’auteur écrit-il ce code, étant donné que deux des trois twigs sont du code mort?
0xc1
est le code du EBCDIC
caractères EBCDIC
pour A
L’auteur teste une telle machine.
À première vue, il pourrait sembler que ce soit un code mort, mais «A» == 0x41 ne sera pas toujours vrai.
Ce que le développeur a essayé de faire ici, c’est de trouver paresseusement ce qu’est l’encodage de la machine implémentant ASCII ou toute variante d’ EBCDIC.
comme @Richard a suggéré que Capital a est mis en correspondance avec 0xc1 dans le Code international d’échange de codes décimal codé par code binary international, voir le tableau ci-dessous dans la twig 2 du if sinon …
Une autre valeur différente pourrait être trouvée par ASCII pour exmaple:
il aurait aussi bien pu:
if('p' == 0x70) { // ... } else if('p' == 0x97) { //... }