小编Mis*_*a.P的帖子

C++ 中的有符号类型表示

我正在读的书中写道:

该标准没有定义如何表示有符号类型,但指定范围应在正值和负值之间均匀划分。因此,8 位有符号字符保证能够保存从 -127 到 127 的值;大多数现代机器使用允许值从 -128 到 127 的表示形式。

我推测 [-128;127] 范围源自称为“补码”的方法,其中负数为 !A+1(例如 0111 为 7,1001 为 -7)。但我无法理解为什么在一些较旧的(?)机器中值范围为[-127;127]。谁能澄清这一点吗?

c++ signed

5
推荐指数
1
解决办法
979
查看次数

编译器警告C4806(number == bool值)的动机是什么?

为什么被true==151认为是不安全的操作true==true,而实际上持有相同的表达却不是.而且,为什么true==151永远不可能是真的,不像true&&151

cout<<(true==151);      //0 and it gives compiler warning C4806
cout<<(true==true);     //1 no warning
if(true==151)cout<<"1"; //"0" and warning again
if(true&&151)cout<<"1"; //1 no warning
if(151)cout<<"1";       //1
Run Code Online (Sandbox Code Playgroud)

警告C4806本身

'==':不安全的操作:提升为类型'int'的类型'bool'的值不能等于给定的常量

c++ compiler-warnings

1
推荐指数
1
解决办法
525
查看次数

标签 统计

c++ ×2

compiler-warnings ×1

signed ×1