犹豫了一下我又回来了,回到公司办公室,坐了下来。决定继续看看类型转换。
浪费时间毫无意义。
无符号类型与整形
尽管我们不会给无符号类型赋一个负值,却可能写出这么做的代码。
看例子:
#include <iostream>
using namespace std;
int main()
{
unsigned u = -1;
cout << u << endl;
return 0;
}
在例子中,将一个负值赋给了一个无符号数。
当我们将一个超出了无符号数范围的数赋值给一个无符号数变量的时候,结果是初始值对无符号数类型表示的数值总数取模的余数。
例子中无符号数类型数值总数的个数是4 294 967 296个,则结果为-1对4 294 967 296取模。
在计算取模运算的过程总我出现了一些疑问,因为对于负数的取模运算的计算方法我不太了解,对于取模运算和取余运算的区别我也不是很清楚。
所以,关于取模运算和取余运算,我也特意的查找了他们之间的区别和具体的计算方法。
首先是计算方法,a对b取模或取余都需要两步。
1.计算商c = a/b
2.计算余数r = a - c*b
他们的计算过程是相同的,不同的地方在于当a为负数时,计算出的商c的取值不同(当a为正数的时候,c的取值是取较靠右的那个值,这个值既可以说是趋向于0又可以说是趋向于负无穷)。
如果是取模运算则c取接近负无穷的那个值,如果是取余运算则c取接近0的那个值。
如本例中的-1对4 294 967 296做运算:
如果是取余运算,则c=0,r = -1。
如果是取模运算,则c=-1,r = -1 - (-1)*4 294 967 296= 4 294 967 295。
程序运行结果:
今天的复习工作暂时到这里了,虽然内容并不多,但是切实学到了以前没学到的东西。毕竟以前学的不踏实,只是了解大概,对知识的框架有了概念,现在的对于c++知识的复
盘可以让我不断的对这个框架进行充实,不会再阅读代码的过程中出现那么多有印象却又不甚了解的问题。