C++学习笔记第六篇(转)
C++学习笔记第六篇:
1,char类型。与int不同,char类型在默认情况下既不是无符号,也不是有符号。这个和具体的编译器实现有关。所以如果将char类型的变量用作数值类型时,应尽量显式的声明为unsigned char或signed char,通常无符号char类型的表示范围是0至255;有符号char类型的表示范围是-128至127。而如果只是用char来存储标准ASCII字符时,有没有符号就都无所谓,可以直接使用char来声明变量。
2,bool类型。布尔类型的变量取值有两种:true 或 false。例如:
bool xyz = true;
关于bool值与int值之间的转换:
字面值 true 和 false 都可以通过提升转换为 int 类型,true被转换为1,false被转换为0.例如:
int xyz = true; // xyz=1
而任何数字或指针都可以被隐式的转换为bool值(不用显式强制转换),非零值被转换为 true;零被转换为 false。例如:
bool xyz = -100; // xyz=true
3,const限定符。在C++中可以使用const语句创建符号常量,通用的格式如下:
const type name = value; 例如:
const int MYAGE = 21;
在完成上述语句后,即创建了一个常量,在程序中使用“MYAGE”即等同于“int类型的21”。MYAGE的值是固定的,不可被重新赋值或修改。此外,使用大写创建常量只是一种推荐,在阅读程序时有助于区分普通变量和常量而已,并不是通用约定。
之所以说const限定符要比之前提到的#define语句更好,是因为:首先,const可以明确指定常量的类型;其次,可以使用C++的作用域规则,将常量符号的定义限制在特定的函数或文件中;最后,可以用于更复杂的类型,例如数组和结构。
4,浮点类型的表示。C++中支持两种浮点数的书写和显示方法,一种是常用的标准小数点表示,例如:1.35;另一种是使用科学计数法,例如1.23E5(即1.23*10^5=123000)、1.23E-5(即1.23/10^5=0.0000123)。呵呵,这其实算是初中数学的知识,d.dddE+n指小数点右移n位;d.dddE-n指小数点左移n位。
5,不同浮点类型的精度。C++中有三种浮点类型:float、double、long double;注1:所谓数值有效位是指数字中有意义的位,例如14162、14002和141.62都是5个有效位,而14100则只有3个有效位。注2:C++中float类型只能保证6位有效位,更高精度需使用double或long double。注3:浮点常量在默认情况下是double类型。
6,算数运算符。加、减、乘、除、求模,例如:
int a = 1+1; // a=2
int a = 1-1; // a=0
int a = 2*3; // a=6
int a = 7/2; // a=3 (取整,抛弃余数部分) 注意:除法操作符的行为取决于操作数的类型,如果两个操作数都是整数,则执行整数除法,返回整数结果,抛弃余数部分;若操作数之一或都是浮点值,则小数部分保留,返回浮点数。
int a = 5%2; // a=1 (取余数)
7,类型转换。赋值时的类型转换,将一个值赋给取值范围更大的类型通常不会导致什么问题,只是占用的字节更多而已;但若将一个值赋给取值范围更小的类型,则会降低精度。例如:
long so_long = xyz; // 如果 xyz 是整型,则so_long的值与其相同;如果 xyz 是浮点型,则so_long的值相比xyz,精度将降低;强制类型转换可使用类似下列语句:
long (xyz); // 将把xyz的值强制转为长整型。
注:强制类型转换不会直接改变xyz变量本身,而只是创建了一个新的、指定类型的值,可以直接使用这个值,也可以赋给新的变量。例如:
long x = long(y); // 或 cout << long (y) + long (z); 等
1,char类型。与int不同,char类型在默认情况下既不是无符号,也不是有符号。这个和具体的编译器实现有关。所以如果将char类型的变量用作数值类型时,应尽量显式的声明为unsigned char或signed char,通常无符号char类型的表示范围是0至255;有符号char类型的表示范围是-128至127。而如果只是用char来存储标准ASCII字符时,有没有符号就都无所谓,可以直接使用char来声明变量。
2,bool类型。布尔类型的变量取值有两种:true 或 false。例如:
bool xyz = true;
关于bool值与int值之间的转换:
字面值 true 和 false 都可以通过提升转换为 int 类型,true被转换为1,false被转换为0.例如:
int xyz = true; // xyz=1
而任何数字或指针都可以被隐式的转换为bool值(不用显式强制转换),非零值被转换为 true;零被转换为 false。例如:
bool xyz = -100; // xyz=true
3,const限定符。在C++中可以使用const语句创建符号常量,通用的格式如下:
const type name = value; 例如:
const int MYAGE = 21;
在完成上述语句后,即创建了一个常量,在程序中使用“MYAGE”即等同于“int类型的21”。MYAGE的值是固定的,不可被重新赋值或修改。此外,使用大写创建常量只是一种推荐,在阅读程序时有助于区分普通变量和常量而已,并不是通用约定。
之所以说const限定符要比之前提到的#define语句更好,是因为:首先,const可以明确指定常量的类型;其次,可以使用C++的作用域规则,将常量符号的定义限制在特定的函数或文件中;最后,可以用于更复杂的类型,例如数组和结构。
4,浮点类型的表示。C++中支持两种浮点数的书写和显示方法,一种是常用的标准小数点表示,例如:1.35;另一种是使用科学计数法,例如1.23E5(即1.23*10^5=123000)、1.23E-5(即1.23/10^5=0.0000123)。呵呵,这其实算是初中数学的知识,d.dddE+n指小数点右移n位;d.dddE-n指小数点左移n位。
5,不同浮点类型的精度。C++中有三种浮点类型:float、double、long double;注1:所谓数值有效位是指数字中有意义的位,例如14162、14002和141.62都是5个有效位,而14100则只有3个有效位。注2:C++中float类型只能保证6位有效位,更高精度需使用double或long double。注3:浮点常量在默认情况下是double类型。
6,算数运算符。加、减、乘、除、求模,例如:
int a = 1+1; // a=2
int a = 1-1; // a=0
int a = 2*3; // a=6
int a = 7/2; // a=3 (取整,抛弃余数部分) 注意:除法操作符的行为取决于操作数的类型,如果两个操作数都是整数,则执行整数除法,返回整数结果,抛弃余数部分;若操作数之一或都是浮点值,则小数部分保留,返回浮点数。
int a = 5%2; // a=1 (取余数)
7,类型转换。赋值时的类型转换,将一个值赋给取值范围更大的类型通常不会导致什么问题,只是占用的字节更多而已;但若将一个值赋给取值范围更小的类型,则会降低精度。例如:
long so_long = xyz; // 如果 xyz 是整型,则so_long的值与其相同;如果 xyz 是浮点型,则so_long的值相比xyz,精度将降低;强制类型转换可使用类似下列语句:
long (xyz); // 将把xyz的值强制转为长整型。
注:强制类型转换不会直接改变xyz变量本身,而只是创建了一个新的、指定类型的值,可以直接使用这个值,也可以赋给新的变量。例如:
long x = long(y); // 或 cout << long (y) + long (z); 等
浙公网安备 33010602011771号