std::numeric_limits<size_t>::max()
当我尝试一些非标准的方法来为我寻找时,Clang 向我提到了这个东西allocator::max_size()
表达式大小似乎限制在 4 个字节,所以它看起来很像一个 impl 定义的多字节字符,但我不知道它是如何工作的。
printf("0x%016hhX\n", '\377'); // 0x00000000000000FF
printf("0x%016X \n", '\3777'); // 0x000000000000FF37
printf("0x%016X \n", '\37777'); // 0x0000000000FF3737
printf("0x%016X \n", '\377777'); // 0x00000000FF373737 [-Wfour-char-constants]
printf("0x%016X \n", '\3777777'); // 0x0000000037373737 [ too long ]
printf("0x%016X \n", '\3777777'); // 0x0000000037373737 [ too long ]
第 2-4 行似乎都返回 int 但只有第 4 行警告-Wfour-char-constants
是否打开-Weveryting
。为什么 4-byte char 必须警告它的用户?
请解释它是如何工作的。它有任何口语或可能是规范的术语吗?