初始化得方式
赋值初始化
利用大括号初始化
int rheas = {12};
int rheas{12}; //两者等价
显示八进制 或者16进制数
cout << hex;
cout << "waist = "<<waist<< endl;
C++如何确定常量的类型
cout << "year = "<< 1492 << endl;
程序将把1492存储为int long还是其他整型呢?
除非有理由存储为其他类型(如使用了特殊的后缀来表示特定的类型,或者值太
大,不能存储为int)否则C++将整型常量存储为int类型
cout.put(); 和C中putchar一样,这个函数是一个重要的C++ OOP概念-成员函数
的一个例子,类定义了如何表示和控制数据,成员函数归类所有,描述了操纵类
数据的方法。例如类ostream有一个put()成员函数,只能通过类的特定对象(例
如这里的cout对象)来使用成员函数。
与int不同的是,char在默认情况下既不是没有符号,也不是有符号,是否有符>号由C++实现决定,这样编译器开发人员可以最大限度将这种类型与硬件属性匹>配起来,如果char有某种特定的行为非常重要,则可以显示将类型设置为signed char或unsigned char
const限定符
通用格式 const type name = value;
注意,应在声明中对const进行初始化,下面的代码不好
const int toes;
toes = 10;
如果在声明常量时没有提供值,则该常量的值将是不确定的,且无法修改。
const比#define的优势所在于,首先,它能够明确指定类型,其次,可以使用C++作用域规则将定义限制在特定的函数或文件中,(作用域规则描述了名称在各>种模块中的可知程度),第三,可以将const用于更加复杂的类型。如数组和结>构 例如C++可以用const值来声明数组长度。
浮点数
C++有三种浮点类型:float double long double,这些类型是按照他们可以表示
的有效数位和允许的指数最小范围来描述的。有效位是数字中有意义的位。
C和C++对于有效位数的要求是,float至少32位,double 至少48位 且不少于float, long double 至少和double一样多。通常情况下,float 32位,double 64位,long double 为80、90或128位。另外这三种类型的指数范围至少是-37~37
float 一般是小数点后7位有效精度 double是小数点后15位精度
浮点常量
默认的浮点常量都属于double类型,如果希望是float类型,需要使用f或F后缀>,对于long double 类型可使用l或者L后缀。
将一种算术类型的值赋给另一种算术类型的变量时,C++将对值进行转换
表达式中包含不同的类型时,C++将对值进行转换
将参数传递给函数时 C++ 将对值进行转换
关于以{}方式进行初始化
const int code = 66
int x = 66;
char c1 {31325}; 不被允许 装不下
char c2 = {66}; 允许 char字符能支持66
char c3 {code} 允许 code 是常量66
char c4 {x} 不允许 因为x 是一个变量 他的值可能很大
x = 31325;
char c5 = x; 允许 这是C语言的赋值
short chickens = 20;
short ducks = 35;
short fowl = chickens + ducks;
C++程序取得chickens 和 ducks的值,并将它们转换为int,然后结果转换为short类型,因为结果将被赋给一个short变量。
通常int类型为计算机最自然的类型,这意味着计算机使用这种类型时运算速度>最快
强制转换通用格式如下
(typeName) value
typeName (value)
前一种格式是适应C语言的,后一种是C++语言的,新格式的想法是,要让强制类
型转换就像函数调用一样,这样对内置类型的强制类型转换就像是为了用户定义
的类设计的类型转换。
C++还引入了4个强制类型转换运算符,对它们的使用要求更为严格,static_cast<>可以用于将值从一种数据类型转换到另一种数值类型,例如
static_cast<long> (thron)
推而广之
static_cast<typeName> (value)
C++11中的auto声明
auto n = 100; //n is int
quto x = 1.5; //x is double
auto y = 1.3e12L //y is long double