有人能帮我在C99和C++03标准中找出下面一行代码会发生什么吗?
uint16_t a = 5;
左侧是已键入的变量,右侧是常量。何时以及如何将常量值的类型与变量匹配?
上述赋值是否等同于下面的语句?
uint16_t a = (uint16_t)5; /* C */
uint16_t a = reinterpret_cast<uint16_t>(5); // C++
如何:
uint16_t a = 5u;
那么如果你有这样的内容:
uint32_t b = a + 5;
上述语句是否等价于下面的语句?
uint32_t b = (uint32_t)(a + (uint16_t)(5)); /* C */
uint32_t b = reinterpret_cast<uint32_t>(a + reinterpret_cast<uint16_t>(5)); // C++
C11和C++14中有哪些变化?请假设系统int为32位。
我已经使用C语言编程一段时间了,但从来没有真正深入地理解它,这总是让我感到困扰,如果有人能帮我整理一下,我会非常感激。
谢谢...
(编辑:添加了假设int为32位的条件)
static_cast
而非reinterpret_cast
(后者仅适用于涉及指针和引用的类型转换)。 - Mike Seymour5
是int
类型,而5u
是unsigned int
类型。 - user3528438