我正在阅读Bjarne Stroustrup的C++编程语言第4版,我无法完全理解第141页中提到的以下段落.
每个字符在实现使用的字符集中都有一个整数值.例如,ASCII字符集中'b'的值为98.这是一个循环,输出您要输入的任何字符的整数值:
void intval()
{
for (char c; cin >> c; )
cout << "the value of '" << c << "' is " << int{c} << '\n';
}
Run Code Online (Sandbox Code Playgroud)
符号int {c}给出了字符c的整数值(''我们可以从c''构造的int).将char转换为整数的可能性提出了一个问题:char是签名还是未签名?由8位字节表示的256个值可以解释为值0到255或者值-127到127.不,不是-128到127,正如人们所期望的那样:C++标准留下了一个可能性 -补充硬件,消除一个价值; 因此,使用-128是不可移植的.不幸的是,对于普通字符的signed或unsigned的选择是实现定义的.C++提供了两种类型,答案是明确的:signed char,至少可以保存-127到127的值,以及unsigned char,它至少可以保存0到255的值.
c ++标准离开的补充硬件的可能性是多少?它是否避免在8位中使用+128和-128的相同表示?