<分区>
对于这段代码:
int main(int argc, char **argv)
{
auto a = static_cast<uint8_t>(sizeof(uint64_t));
auto b = 8 * static_cast<uint8_t>(sizeof(uint64_t));
auto c = static_cast<uint32_t>(sizeof(uint64_t));
auto d = 8 * static_cast<uint32_t>(sizeof(uint64_t));
return EXIT_SUCCESS;
}
a
的类型解析为unsigned char
,b
的类型解析为int
,c
的类型解析为unsigned int
并且,d
的类型解析为unsigned int
我期望 a
、c
和 d
的这些结果,但我对 b
感到困惑.
64 显然适合 8 位 unsigned char
。谁能解释一下?