表示整数,字符,布尔值的算术类型合称整形。
除了bool类型之外,整形可以使带符号的,也可以是不带符号的。
c++中,将负数赋给unsigned类型是合法的。
进制输出 int a = 100;
以10进制输出 以8进制输出 以16进制输出
cout << dec << a << '\t' << oct << a << '\t' << hex << a << endl;
连接字符串字面值和宽字符串字面值可能会导致崩溃
cout << "abcd" << L"will down" << endl;
未定义行为源于编译器未能检测到的程序错误或者太麻烦以至于无法检测到的错误。
整数后面加L表示long,浮点数后面加L表示扩展精度
1324L;
12.2131L;
c++是静态类型语言,在编译时会做类型检查
对象的类型限制了对象可以执行的操作,如果某种类型不支持某种操作,那么这种类型的对象也就不能执行该操作。
什么是变量:变量提供了程序可以操作的有名字的存储区
c++每个变量都有特定的类型,
该类型决定了变量的内存大小和布局
能够存储于该内存中的值得范围
以及可应用在该变量上的操作集
左值:可以出现在赋值语句的左边或者右边
右值:可以出现在赋值符合的右边,不能出现在赋值语句的左边
所有变量都是左值。
=操作符读取右操作数并写到左操作数。
对象:就是内存中具有类型的区域
变量定义指定了变量的类型和标识符,也可以为对象提供初始值。
c++提供了两种初始化变量的形式:复制初始化 直接初始化(两种初始化差别不大,直接初始化语法更加灵活,效率更高)
int a = 100;复制初始化
int b(100);直接初始化
初始化:指创建变量并给它赋初始值
赋值:擦除对象的当前值并用新值替代。
对象可以用任意复杂的表达式(包括函数的返回值)来初始化
double a = b = 1.1233;是非法的(因为同一定义语句中不同变量的初始化应分别进行)
int val = val 是合法的 但是这个初始化没有意义,val仍是未初始化的。
变量的定义用于为变量分配存储空间,还可以为变量指定初始值,一个程序中,一个变量有且仅有一个定义
声明用于向程序表明变量的类型和名字。 (定义也是声明,当定义时我们声明了它的类型和名字)
可以通过extern关键字声明变量而不定义它,也不分配存储空间。
如果声明有初始化,那么它可以被当做是定义,即声明标记为extern。
extern double pi = 3.1415926;定义(只有当变量声明位于函数外部时,才可以有初始化式)
extern int i; 声明
用来区分名字的不同意义的上下文称为作用域。
关于内置类型初始化问题
函数体内 变量都不自动进行初始化
函数体外变量都自动初始化为0
而类类型初始化取决于构造函数
string gloval_str;
int global_int;
int main(){
string local_str;
int local_int;
return 0;
}
global_str 和local_str初始值均为空字符串
global_int 初始值为0,local_int没有初始值。
因为常量(const)在定义后就不能被修改,所以定义时必须初始化
通过制定const变量为extern,就可以在整个程序中访问const对象。