今天在读C++Primer时有这么一句话:对象的类型决定对象的取值。这会引起一个疑问:当我们试着把一个超出其取值范围的值赋给一个指定类型的对象时,结果会怎样呢?答案取决于这种类型是signed还是unsigned。
对于unsigned类型来说,编译器将会对unsigned类型求模,直到满足范围为止;对于signed类型来说,由编译器决定实际赋予的值,在实践操作中,很多编译器处理signed类型与unsigned类型类似。
那么对于我们常用的C/C++编译器 VC;编译器是如何处理signed类型的呢?
对于常见的整型int(是一种signed类型)有如下例子:
#include<iostream>
using namespace std;
int main(){
int n=379997532212;
cout<<n;
}
int类型在VC中由4个字节表示,因此取值范围为-2147483648-2147483647
显然379997532212已经超出范围了&#x