奇思妙想 · 2024年 6月 29日 0

为什么这种变量名“\u0061\u0062”都能编译通过?

54 次浏览

支持Unicode字符集的编译器,可以支持\u0061\u0062这种命名,其实就是ab. 例如:

  • C#/Java可以用int \u0061\u0062 = 12初始化变量ab的值为12. 可以用ab或者\u0061\u0062引用此变量。
  • JavaScript(ES6以上版本)同样也支持这种命名方法。
  • C++11开始比较完整地支持Unicode, 不能用上面的形式作为变量名,但可使用形如L"\u0061\u0062"初始化字符串。
  • C语言对于Unicode的支持一直不好,就算最新的GCC14一样如此。