以下代码
unsigned char c1 ;
unsigned int i1 ;
i1=0x12345678;
i1=i1>>16;
i1=i1 & 0x000000ff;
c1=i1;
是想将 i1 变量中处于34这两个数位置的数值赋值给变量c1
请教一下,最后的c1=i1 有错误吗?
我觉得从数值上实现了您的功能。
至于最后所说“最后的c1=i1 有错误吗?”这里如果是程序判断,那么(c1 == i1) = true,其判定机理是把uint8_t强制转换成了uint32_t。
引用: javnson 发表于 2022-5-15 21:51 我觉得从数值上实现了您的功能。 至于最后所说“最后的c1=i1 有错误吗?”这里如果是程 ...
我是想问一下,把32位的数据直接赋值给8位的变量,不会有什么异常吧
引用: 深圳小花 发表于 2022-5-16 08:53 我是想问一下,把32位的数据直接赋值给8位的变量,不会有什么异常吧
不会
i1 = i1 >> 16; c1 = (unsigned char)(i1 & 0xff); // C 强制类型转换, 我习惯使用(TYPE); 另外 c1 = (unsigned char)(i1 & 0xff) = (unsigned char)i1 = i1 |
引用: mingplus 发表于 2022-5-16 11:00 i1 = i1 >> 16; c1 = (unsigned char)(i1 & 0xff); // C 强制类 ...
非常感谢。请问不加强制类型转换,c1=i1 没事吧,只是想获取 i1最低字节的内容?
i1 = i1 >> 16; 结果 是i1为0 ,得不到你想要的结果。