#include #include // most modern text editors will show you the invisible characters in this file // because this file demonstrates a very real security vulnerability // In vscode you can disable this by adding the following to your settings.json // "editor.renderWhitespace": "none", // "editor.unicodeHighlight.ambiguousCharacters": false, // "editor.unicodeHighlight.invisibleCharacters": false, // "editor.unicodeHighlight.nonBasicASCII": false, // "editor.renderControlCharacters": false, // But you should immediately re-enable it after you have finished reading this file int main(void) { // These three variables look to be all the same // But they are not, they are all different variables // Each variable uses a different unicode character for the `o` // The first variable uses the latin small letter o (U+006F) // The second variable uses the armenian small letter o (U+0585) // The third variable uses the cyrillic small letter o (U+043E) // They all look the same, but the C compiler treats them as different variables int total; int tօtal; int tоtal = -666; total = 100; printf("total = %d\n", total); // 100 tօtal = 999; printf("total = %d\n", total); // 999 total = tօtal; printf("total = %d\n", tоtal); // 999 printf("total = %d\n", tօtal); // 999 return 0; }