3.关于无符号类型和char的一些必懂知识

时间:2019-11-13
本文章向大家介绍3.关于无符号类型和char的一些必懂知识,主要包括3.关于无符号类型和char的一些必懂知识使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

3.1. 输出一个用负数赋值的无符号类型声明的变量或者输出一个两个无符号类型声明的变量相减的结果的结果是什么?

1     unsigned int num=1;
2     unsigned int num1 = 2;
3     std::cout << num - num1;

这里的结果应当是(-10)mod (int类型的最大值加1)得到的结果,mod 运算的结果符号看右边的值,显然是正数的结果,32位机器的int是最大值4294967295,所以最后的结果是4294967295。不是应该是10吗?如何从计算机存储的角度看待这个结果呢?数值在计算机中的的存储是用原码,反码和补码的来解决的,而且只保留了加法运算,补码解决了原码正负相加结果不符实际和反码无法区分正负0的弊端,这里不再赘述,具体看转的文章中有。-1的二进制补码是1111 1111 1111 1111...1111将它转换为无符号数后,恰好为4294967295,原码和补码具有一致性,于是就有了上述的结果。

3.2.char 中的字符集是怎么回事?如何将字符的0~9转换成int?

(1)字符集是用八进制或者十六进制数字对可打印和不可打印的字符进行编码使之一一对应,在C++中可以使用转义序列'\'进行对应的输出。

(2)因为0~9对应的字符集中是连续的,只需要拿该字符减去‘0’即可得到对应的int数字

原文地址:https://www.cnblogs.com/Royzzzzz/p/11851688.html