[求助] 请教一下,一个uint32变量给uint8变量赋值的问题,

深圳小花   2022-5-15 11:27 楼主

以下代码 

unsigned    char    c1 ;
unsigned    int       i1 ;
 

i1=0x12345678;

i1=i1>>16;

i1=i1 & 0x000000ff;

c1=i1;

是想将  i1 变量中处于34这两个数位置的数值赋值给变量c1

 

请教一下,最后的c1=i1 有错误吗?

 

 

 

 

 

回复评论 (11)

maychang 老师,明明是回复了,为什么看不到呀,版主?

点赞  2022-5-15 17:06

我觉得从数值上实现了您的功能。

至于最后所说“最后的c1=i1 有错误吗?”这里如果是程序判断,那么(c1 == i1) = true,其判定机理是把uint8_t强制转换成了uint32_t。

点赞  2022-5-15 21:51
引用: javnson 发表于 2022-5-15 21:51 我觉得从数值上实现了您的功能。 至于最后所说“最后的c1=i1 有错误吗?”这里如果是程 ...

感谢。

 

点赞  2022-5-16 08:52
引用: javnson 发表于 2022-5-15 21:51 我觉得从数值上实现了您的功能。 至于最后所说“最后的c1=i1 有错误吗?”这里如果是程 ...

我是想问一下,把32位的数据直接赋值给8位的变量,不会有什么异常吧

 

点赞  2022-5-16 08:53
引用: 深圳小花 发表于 2022-5-16 08:53 我是想问一下,把32位的数据直接赋值给8位的变量,不会有什么异常吧  

不会

点赞  2022-5-16 09:57

i1 = i1 >> 16;

c1 = (unsigned char)(i1 & 0xff);  // C 强制类型转换, 我习惯使用(TYPE); 另外 c1 = (unsigned char)(i1 & 0xff) = (unsigned char)i1 = i1

点赞  2022-5-16 11:00
引用: mingplus 发表于 2022-5-16 11:00 i1 = i1 >> 16; c1 = (unsigned char)(i1 & 0xff);  // C 强制类 ...

非常感谢。请问不加强制类型转换,c1=i1 没事吧,只是想获取 i1最低字节的内容?

点赞  2022-5-16 11:36

操作正确!

没问题!

چوآن شـين
点赞  2022-5-16 20:52
新手小白,前来学习。以我浅薄的认识看起来没有错误
点赞  2023-8-21 18:42

截断,了解一下。

默认摸鱼,再摸鱼。2022、9、28
点赞  2023-8-21 18:52

i1 = i1 >> 16;   结果 是i1为0  ,得不到你想要的结果。

点赞  2024-2-24 13:08
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复