C++ Primer Plus 预习(一) 处理数据(第3章)

处理数据

变量的声明

程序需要用变量来存储信息,比如班级人数,考试成绩等。在C++中,必须要声明变量之后才可以使用。变量声明的格式如下:

int weight = 10; //声明一个值为10,变量名为weight的整形变量 

double  height;
height = 9.9; //声明一个值为9.9,变量名为height的浮点数变量 

char ch;
cin >> ch; //声明一个变量名为ch的字符变量,通过键盘输入给ch赋值
  • 声明变量时要注意,首先写出数据类型
    1.int,short等表示整数(short和int表达的整数范围不同)
    2.double,float等表示浮点数,就是平时我们所说的小数
    3.bool布尔类型只能为 true 或 false
    4.char类型用来存储一个字符
    以上是几种常用的数据类型,对于这几种数据类型的具体介绍可以看书本第三章

  • 写出数据类型之后,写变量名
    1.变量名只能有大小写字母、数字、_(下划线),不能以数字开头
    2.区分大小写,即apple和aPPle是两个不同的变量
    3.不能与C++关键字冲突,比如不能把变量命名为cout、int等
    4.变量名需要有意义,以增加代码的可读性,比如用myScore表示我的得分,最好不要使用 a、b、x、y 等变量名
    5.如果变量名由几个单词组成,可以第一个单词的首字母小写,剩下的单词首字母大写,如 numberOfDigit;也可以用下划线区分,比如 number_of_digit

  • 最后变量名需要赋初值来使用
    1.通过等号赋值
    2.通过cin,在键盘输入变量的值


const限定符

有时候一些常量,我们不希望它的值被改变,就可以在声明变量时加上const。比如我们在已知圆的半径 radius 需要计算圆的面积时,需要π的值,我们可以定义一个常量 const double PI = 3.1415926,这样在计算圆的面积时就可以直接通过 double area = PI*radius*radius 得到。具体代码参见下面:

#include<iostream>
using namespace std;
int main()
{
    int radius = 3; //圆的半径为3
    const double PI = 3.1415926; //设定圆周率π的值
    double area = PI*radius*radius;
    cout << "area: " << area << endl; 

    return 0;
}

所有被加了const限定符的变量,都是只读的,即它的值是不能被改变的,只有在声明变量的时候才可以赋初值,在其他时候只能被读取。如 const double PI = 3.1415926; 是合法的,但是 const double PI; PI = 3.1415926; 就是不合法的,所以加了 const 限定符的变量必须在声明时被赋初值,否则这个变量就是没有值的,也就是毫无意义的。


C++的算术运算符

C++有5种基本算术计算:加法、减法、乘法、除法和求模。这5种运算可以看以下的例子:

#include<iostream>
using namespace std;
int main()
{
    int num1 = 6, num2 = 3;

    cout << num1 + num2 << endl; //加法运算,输出结果为9
    cout << num1 - num2 << endl; //减法运算,输出结果为3
    cout << num1 * num2 << endl; //乘法运算,输出结果为18
    cout << num1 / num2 << endl; //除法运算,输出结果为2
    cout << num1 % num2 << endl; //取模运算,输出结果为0

    return 0;
}
  • 运算符的优先级
    C++的运算符的优先级是和平时我们的计算习惯相同的,+ - 运算符优先级相同,* / %运算符优先级相同,前者低于后者。float logs = 3 + 4 * 5; 的结果就是23。如果想先计算加法,可以通过括号 :float logs = (3 + 4) * 5;,这样得到的值就是35。
    值得一提的是,有时候即使不需要加括号就能得到我们想要的结果,我们也会通过加括号来增加代码的可读性,比如float logs = 3 + (4 * 5); 的括号虽然没有改变运算的优先级,但是让代码看起来更加清晰、易懂。

类型转换

有时候我们会遇到这样的问题——求5÷2的值,我们期望得到的值是2.5,于是写出如下语句 double result = 5 / 2; ,但是我们把result输出后却发现它的值是2,这就涉及到了C++的类型转换问题。类型转换可以分为隐式类型转换和显式类型转换。
隐式类型转换是由编译系统完成的,例如 double num = 5;,5属于整型,被赋值给了double类型的变量,就自动转化为了double类型。要注意,隐式类型转换可能会引发数据的丢失,比如 int a = 2.55; ,double转为int只会取整数部分,所以a的值为2,小数部分就被丢失了;同样的,int a = 50000; short b = a;,我们把b输出得到的值并不是50000,因为b是short类型,表达范围为-32768至32767,50000已经超出了它的表达范围,数据会丢失。
显式类型转化是由用户规定的,在对应的变量前加上(typeName)就可以了,比如 (double) 5 就可以把5由int转为double类型。


算数运算符中的类型转换

在运算中默认的类型转换如下图:
默认类型转换
红色表示无条件的转换,表示在任何情况下都会进行的转换,如 char ch = 3 + 'A'; 得到的结果为 ‘D’。运算过程是:3仍为int,’A’无条件转换为int类型,即为字符 ‘A’ 的ASCII码65, 3 + 65得到68,68赋值给char类型的变量ch,自动转换为char类型,ASCII码为68的字符为 ‘D’,得到结果。
蓝色表示有条件的转换,不同的数据类型进行运算时会进行转换。如 int a = 3 + 3.5; 的运算过程是:3为int类型,3.5为double类型,根据上图,int先转换为double类型,3+3.5得到6.5,6.5赋值给int类型的变量a,6.5再由double转换为int,a的值为6。
在这时候再计算5÷2,可以有下面2种方法:

    cout << 5 / 2.0 << endl; //隐式类型转换
    cout << 5 / (double)2 << endl; //显式类型转换

猜你喜欢

转载自blog.csdn.net/qq_37876210/article/details/82024972