2017-01-17 3 views
1

я использую что-то вроде следующего в моей 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?

ответ

0

Нет, не в C99 или любой другой версии стандарта C константы с е в U суффиксе всегда неподписанные и число L дает звание int, long или long long.

Смежные вопросы