[STM32F1] 请教一下赋值语句中的类型转换问题。。

[复制链接]
1865|9
 楼主| xwuzi 发表于 2014-9-20 16:26 | 显示全部楼层 |阅读模式
请问一下
unsigned char u8;
u8 = 0x3021;
执行的结果是啥?
舍去高位还是低位?
mmuuss586 发表于 2014-9-20 16:30 | 显示全部楼层
等于低位;
diweo 发表于 2014-9-20 16:33 | 显示全部楼层
数值上是等于低位。不过编译器应该都能检测出来并给出warning.
 楼主| xwuzi 发表于 2014-9-20 16:47 | 显示全部楼层
mmuuss586 发表于 2014-9-20 16:30
等于低位;

谢谢!
 楼主| xwuzi 发表于 2014-9-20 16:48 | 显示全部楼层
diweo 发表于 2014-9-20 16:33
数值上是等于低位。不过编译器应该都能检测出来并给出warning.

谢谢!
编译通过了,没有警告诶。
我用的是MDK
mmuuss586 发表于 2014-9-20 18:07 | 显示全部楼层
xwuzi 发表于 2014-9-20 16:48
谢谢!
编译通过了,没有警告诶。
我用的是MDK

没有警告,正常,编译器会帮你转换的;
命中注定0818 发表于 2014-9-20 18:33 | 显示全部楼层
细节很重要,楼主fighting
houjiajian 发表于 2014-9-20 20:57 | 显示全部楼层
个人看法:
1,将const类型(0x3021)赋值给unsigned char 类型不妥。
2,舍去地位或是高位要看内存中是大端还是小段模式。
李富贵 发表于 2014-9-20 23:03 | 显示全部楼层
houjiajian 发表于 2014-9-20 20:57
个人看法:
1,将const类型(0x3021)赋值给unsigned char 类型不妥。
2,舍去地位或是高位要看内存中是大 ...

你的2纯粹是胡说八道,常数的大小端和处理器大小端是对应一致的,所以必然是舍掉高位保留低位。
bear1 发表于 2014-9-23 15:10 来自手机 | 显示全部楼层
李富贵 发表于 2014-9-20 23:03
你的2纯粹是胡说八道,常数的大小端和处理器大小端是对应一致的,所以必然是舍掉高位保留低位。 ...

写个程序实际跑一看,谁对谁错?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:人生无非是笑笑人家,再被人家笑笑~

43

主题

493

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部