Si consideri il seguente esempio di codice:Perché l'escape del carattere 'w' (' w') inverte la rappresentazione della memoria di una variabile int?
int i1 = 'w\"';
int i2 = '\w\"';
int i3 = 'w"';
int i4 = 'w\"';
Nota: MSVS SP1 impostazioni 2005, C++ compiler, compilation debug solo default/linkage. macchina x86. Il compilatore emette un avviso C4129: "w": sequenza di escape caratteri non riconosciuta e tutto il resto va bene.
La rappresentazione della memoria grezza delle variabili indicate sono i seguenti:
i1 -> 22 77 00 00
i2 -> 77 22 00 00
i3 -> 22 77 00 00
i4 -> 22 77 00 00
Perché i2 ha senso inverso? Cosa sta succedendo??
Invia bug a connect.microsoft.com. Tuttavia potresti avere qualche problema a prenderti sul serio. –
Interessante. E VS 2010 fa la stessa cosa. –
Non vedo alcun motivo per essere disinvolto ... È * un * bug, il compilatore dovrebbe ignorare il backslash in quella situazione [come definito da MS; lo standard lascia il comportamento all'implementazione]. Non ritarderà la prossima release o altro, ma non tutte le segnalazioni di bug possono essere interrotte. –