注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题

kingdomlzq的个人空间 http://home.eeworld.com.cn/space-uid-57809.html [收藏] [复制] [分享] [RSS]

日志

C++和单片机C强制类型转换的差异

已有 377 次阅读2018-1-31 11:53 |个人分类:学习笔记

C++和单片机C强制类型转换的差异

字符型强制转换为int型的时候,单片机的编译结果和C++的编译结果完全不一样
在单片机C语言里面,高字节一直为0
而在C++里面,高字节和被转换对象的最高位有关,最高位为1,则高字节为ff,最高位为0,则高字节为00
测试代码如下:
单片机测试程序
uint8_t a = 0x64;
uint8_t b = 0x81;
uint32_t a1 = (a&0xffff);
uint32_t b1 = (b&0xffff);
printf("a1 = %x\r\n",a1);
printf("b1 = %x\r\n",b1); 
测试结果:

C++测试代码:
char a = 0x64;
char b = 0x81;

unsigned int a1;
unsigned int b1;

a1 = a & 0xffff;
b1 = b & 0xffff;

cout << "a1 = " << hex << a1 << endl;
cout << "b1 = " << hex << b1 << endl;
测试结果:

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

小黑屋|手机版|Archiver|电子工程世界 ( 京ICP证 060456

GMT+8, 2018-5-26 06:32 , Processed in 0.019990 second(s), 11 queries , Gzip On, Redis On.

Powered by EEWORLD电子工程世界

© 2018 http://bbs.eeworld.com.cn/

返回顶部