1 int类型和 unsigned int 类型
①int表示32位整数,最高位为符号位,正数为0,负数为1。
最大正整数INT_MAX = 2147483647 = 2^31-1,是除最高位为0外,其余位均为1的二进制数:0111…1111。
最大负整数INT_MIN = -2147483648 = 2^31。
由于二进制补码等原因
INT_MAX + 1 = INT_MIN (会溢出,不符合计算逻辑)
②unsigned int的最高位可以使用,其最大值是1111…1111,相当于在第32位增加了个1,大小为2^ 31,其值为2^31+INT_MAX = 2 ^32 -1;
UNSIGNED_MAX = 4294967295 UNSIGNED_MIN = 0
③int a = 1。
a最多左移30位,for(int i = 0; i < 30; i++){a <<= 1;}
,移动后a为0100…000,其值为2^30。
a左移31次,a= -2147483648
a左移32次,a=0
④unsigned int b = 1。
b最多左移31位,b = 2^31。
b左移32位,b = 0。
2 字符串-string类型的比较
string内部有 > 、< 、 >= 、 <= 等比较方式,比较方式依据ASCII码,比较字符串首位的ASCII码大小!,如果首位相同则比较次位
常见ASCII码的大小规则:0-9 < A-Z < a-z。
NULL为0,“A”为65,“a”为97,“0”为 48。
例如:
s1 = "9999", s2 = "a" s1 < s2;
s1 = "123", s2 = "5", s1 < s2;
s1 = "ZARD", s2 = "c", s1 < s2;
s1 = "9a", s2 = "999", s1 > s2;
3 string、char类型当int类型使用
string s = "happy";
s[0] s[2] 都是char类型
vector<int> v(128, 0); ASCII表一共有128个字符,用此大小足够
v[s[1]] 相当于 v['a'] 相当于 v[97]
3 to_string()函数
前置条件:#include< string>
功能:将数字常量转换为字符串
函数原型:
string to_string (int val);
string to_string (long val);
string to_string (long long val);
string to_string (unsigned val);
string to_string (unsigned long val);
string to_string (unsigned long long val);
string to_string (float val);
string to_string (double val);
string to_string (long double val);
4 stoi()和atoi()函数
把字符串中的数值转换为int类型
stoi(const string& )
是C++函数,头文件< string >
stoi()会做范围检查,默认范围是在int的范围内的,如果超出范围的话则会runtime error!
atoi(const char*)
是C函数,头文件< cstring>
要使用atoi,注意把string类型转换为char*类型,用c_str()函数。
atoi()不会做范围检查,如果超出范围的话,超出上界,则输出上界,超出下界,则输出下界;
还有stol、stoul等一系列转换函数。
5 string的“+=”、“append”和“push_back”
三种添加方式详解
push_back和数组类似,只能加单个字符。