当前位置:  开发笔记 > 编程语言 > 正文

定义(1 << 31)还是使用0x80000000?结果不同

如何解决《定义(1<<31)还是使用0x80000000?结果不同》经验,为你挑选了1个好方法。

1 << 31在大多数平台(例如,具有16位或32位的系统int)上是未定义的行为,因为其结果无法在int(表达式的结果类型)中表示.不要在代码中使用该表达式.另一方面,1U << 31在具有32位的系统上是有效表达式,int因为其结果可在unsigned int(表达式的结果类型)中表示.

在32位int系统上,0x80000000是一个(相对)大的正整数类型unsigned int.如果你幸运(或不幸)足以让恶魔通过使用1 << 31表达式飞出你的鼻子,这个表达式最可能的结果INT_MIN是一个(相对)大的负整数类型int.



1> ouah..:

1 << 31在大多数平台(例如,具有16位或32位的系统int)上是未定义的行为,因为其结果无法在int(表达式的结果类型)中表示.不要在代码中使用该表达式.另一方面,1U << 31在具有32位的系统上是有效表达式,int因为其结果可在unsigned int(表达式的结果类型)中表示.

在32位int系统上,0x80000000是一个(相对)大的正整数类型unsigned int.如果你幸运(或不幸)足以让恶魔通过使用1 << 31表达式飞出你的鼻子,这个表达式最可能的结果INT_MIN是一个(相对)大的负整数类型int.

推荐阅读
mobiledu2402852413
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有