C99 中的隐式整数转换与静态代码检查器

Implicit integer conversion in C99 vs static code checker

我在我的 C99 代码中使用了如下内容:

 uint64_t x = 1000ULL * (5U * 1000U);

我假设 U 总是意味着 unsigned int

我的静态代码检查器现在在这里抱怨隐式类型转换,这是正确的。但是它不会抱怨 unsigned long long vs unsigned int。它抱怨 unsigned charunsigned short 相反。

所以我的问题是: 上面的文字是否可以解释为不同于 C99 中的 unsigned long longunsigned int 的其他内容(尤其是更小的内容)?

不,在 C99 或任何其他版本的带有 U 后缀的 C 标准常量中,它们始终是无符号的,L 的数字给你等级 intlonglong long.