数据类型截断

时间:2015-01-06 23:12:51

标签: c

我有一个基本的C问题。

假设我已经声明并初始化了一个标准的16位无符号整数

uint16_t var1 = 0x1234;

然后假设我声明了一个8位无符号整数:

uint8_t var2;

如果我要分配,

var2 = var1;

这是一个有效的陈述吗?它会简单地截断产生结果的更重要的位:

var2 == 0x34

评估为真?

2 个答案:

答案 0 :(得分:2)

我认为你的意思是:

uint16_t var1 = 0x1234;
uint8_t var2;
var2 = var1;

是的,这会截断var1以适应var1的数据类型,因此var2将等于0x34。

答案 1 :(得分:1)

是。编译器会在内部将其解释为

var2 = (uint8_t)var1;

这会导致var2的值为0x34。