gpt4 book ai didi

c++ - C/C++ 文字

转载 作者:IT老高 更新时间:2023-10-28 22:30:21 27 4
gpt4 key购买 nike

有人可以帮我在标准(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 位的假设)

最佳答案

规则是首先评估 RHS,然后将值转换为目标类型。特别是

uint32_t b = a + 5;

等价于

uint32_t b = (uint32_t)((int)a + 5);

如果uint16_t是窄类型,比int窄。

C 中的所有操作(我认为 C++ 中也是如此)至少是 int 的整数等级。

关于c++ - C/C++ 文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30461365/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com