【发布时间】:2018-02-18 03:18:39
【问题描述】:
我有以下问题:例如我给了代码:
uint8_t a = 0x30;
uint16_t b = a << 8;
a 会先移位然后转换为 uint16_t 吗?还是先转换成uint16_t?还是这种行为编译器依赖?我正在尝试构建一个 uint16_t 给定 lsb 和 msb 分别为 uint8_ts。
附:我不知道这种行为取决于它是 C 还是 C++,有人可以告诉它在这两种情况下如何工作吗?
【问题讨论】:
-
C != C++。首先确定您实际使用的语言,并用 only 标记该语言。
-
C 还是 C++?它们是两种截然不同的语言,尤其是在语义方面。
-
这种行为是否取决于它是c还是c++
-
可能。即使没有,选择一种语言也会更容易找到重复或参考链接。
-
现在当你选择一种语言时,我推荐你read about implicit conversions in C,尤其是关于integer promotions的部分。
标签: c type-conversion integer-promotion