我有一个基本的C问题。
假设我已经声明并初始化了一个标准的16位无符号整数
uint16_t var1 = 0x1234;
然后假设我声明了一个8位无符号整数:
uint8_t var2;
如果我要分配,
var2 = var1;
这是一个有效的陈述吗?它会简单地截断产生结果的更重要的位:
var2 == 0x34
评估为真?
答案 0 :(得分:2)
我认为你的意思是:
uint16_t var1 = 0x1234;
uint8_t var2;
var2 = var1;
是的,这会截断var1
以适应var1
的数据类型,因此var2
将等于0x34。
答案 1 :(得分:1)
是。编译器会在内部将其解释为
var2 = (uint8_t)var1;
这会导致var2的值为0x34。