0

Clang は、標準以外のさまざまな方法std::numeric_limits<size_t>::max()で自分のallocator::max_size()

式のサイズは 4 バイトに制限されているように見えるため、impl で定義されたマルチバイト char のように見えますが、正確にどのように機能するかはわかりません。

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-constantsif turn on を警告し-Weverytingます。4 バイト char でユーザーに警告する必要があるのはなぜですか?

それがどのように機能するか説明してください。口語的またはおそらく規範的な用語はありますか?

godbolt.org/g/7AR9nw

4

1 に答える 1