C/C++ 数字后缀用大写还是小写?

问题

对于 uint64_t 的常量,以前只写 Windows 平台的代码,所以习惯加上 Ui64 的后缀,前几天发现 g++ 不支持,于是改为 ULL,然后又测试了 ull,也是可以的,开始纠结以后是用大写还是小写……

分析

输入时,是小写比大写方便,但小写的字母 l,容易被认成数字 1,比如 1234567890ll,看起来没 1234567890LL 容易辨认。虽然可以通过字体来提高辨识度,但不是每个人都用这样的字体。

看了 golang,并不支持数字加后缀,好样的!

同样的纠结,还有十六进制的 0x 和 0X,abcdef 和 ABCDEF……

golang 一样有这个纠结,看来要彻底的单一化还是不容易的。

ATL 的 HexEncode 函数,输出的十六进制是大写的,UMU 也一直喜欢大写格式,但 std::hex 默认是小写,要用 std::setiosflags (std::ios::uppercase) 改大写。所以,如果自己实现一个 HexEncode 函数,默认还是应该返回小写格式的,这个道理很简单,您看一下键盘,上面标注的都是大写字母,但按下去,默认是小写。要大写?请按住 SHIFT。

总结

写代码时,数字后缀用大写,毕竟也很少需要加后缀;输出时,数字并不需要带后缀。

而十六进制可以更宽松点:写代码时,用小写,节省按 SHIFT 键;输出时,看情况。