为什么uint16_t在这里有所作为?
发布时间:2020-12-13 20:08:24 所属栏目:Windows 来源:网络整理
导读:volatile uint16_t r;unsigned char poly = 0x07;unsigned char c = 0;r = (c 8) ^ poly; 当在Linux上使用gcc编译代码时,r为7. 当Microchip C18编译相同的代码时,r为0. 为什么? 如果我更改为: volatile uint16_t r;uint16_t poly = 0x07;uint16_t c = 0;r
volatile uint16_t r; unsigned char poly = 0x07; unsigned char c = 0; r = (c << 8) ^ poly; 当在Linux上使用gcc编译代码时,r为7. 如果我更改为: volatile uint16_t r; uint16_t poly = 0x07; uint16_t c = 0; r = (c << 8) ^ poly; 在C18中r也变为7. 在C18手册中有关于整数推广的部分,但我不认为它与我的问题有关.无论如何,这里是:
由于c < 8在这个编译器中是未定义的,xor的结果是无法预测的.结果可能是编译器选择的任何东西. 有关未定义行为的介绍,请参见
What Every C Programmer Should Know About Undefined Behavior,特别是“超大转移金额”部分.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- windows-server-2003 – 如何从启动CD获取许可证密钥?
- Windows – 由于MSVCR110.dll,MS Visual Studio 2012终端无
- windows – Bash’printf’相当于命令提示符?
- Win10家庭版升级教育版专业版密钥曝光:无法激活的解决办法
- 解决win10 蓝牙设备只能配对无法连接 ,并且删除设备无效的
- remote-desktop – 仅允许RemoteApp,而不允许远程桌面
- “init在do_boot中终止”Windows 8.1 Rabbit MQ无法启动
- 窗口 – 什么时候可以使用PowerShell超过传统的应用程序?
- 如何为小型企业Windows 2011标准下载和安装wannacry补丁
- 如何检测壁纸何时发生变化(Windows XP或更高版本)?
推荐文章
站长推荐
- windows-server-2008 – 每个用户的网络监控
- Windows批处理脚本url解码
- osx – 当使用Windows服务器和Mac代理程序使用服
- windows-phone-8 – ‘System.Net.HttpWebReques
- xaml – 在Windows 8应用程序中将Rectangle的高度
- Windows10环境下WDK开发使用IoCreateDeviceSecur
- 有没有理由使用Windows Server 2003而不是Server
- 联想拯救者Y7000安装双系统:win10 + ubuntu16.0
- Windows – 防止硬重置删除WIN7下的注册表更改?
- macos – 如何完全删除新的Microsoft Visual Stu
热点阅读