я использую что-то вроде следующего в моей C99 код:неявной целое преобразование в C99 против статического кода проверки
uint64_t x = 1000ULL * (5U * 1000U);
Я предположил, U
всегда означает unsigned int
.
Моя статическая проверка кода теперь жалуется на неявное преобразование типов здесь, что верно. Однако он не жалуется на unsigned long long
против unsigned int
. Он жалуется на unsigned char
против unsigned short
.
Так что мои вопросы таковы: Могут ли эти литералы быть интерпретированы как нечто иное (особенно меньшее), чем unsigned long long
и unsigned int
в C99?