提示:本文为C++复习资料,从头回顾这些基础,希望自己能更进一步。
提示:以下是本篇文章正文内容
C++提供了5中基本的算术计算:加法、减法、乘法、除法以及求模。
int num1 = 6 + 8;
6和8都是操作数,+号为运算符,6+8为表达式,其结果将赋予int类型变量num1。
5种基本运算符:
+号运算符、-号运算符、*号运算符、/号运算符以及%运算符。
其中/号运算符:如果两个操作数都是整数,则结果为商的整数部分,小数部分被丢弃。如果其中一个操作数为float,则输出含有小数部分。
%运算符:生成第一个数除以第二个数得到的余数部分,例如8 % 6为2。
注意用%运算符时,两个操作数都必须是整型,该运算符用于浮点数将导致编译错误。如果其中一个操作数为负数,则看第一个操作数的正负号,为正则结果也为正,为负则结果也为负,与第二操作数无关。
C++运算符遵从以下几点:
1.先乘除,后加减。
例如:6+89可以看作6+(89);
2.*、/和%位于同一优先级。+和-优先级相同但低于乘除。
3.优先级的顺序:
float f = 8/6*9;
此时优先级本身并不能指出程序应该先计算左边的/运算还是右边的运算,两者得到的结果并不相同,当两个运算符的优先级相同时,C++将看操作符的结合性是从左到右还是从右到左。从结合性方面的资料查找来看,乘除都是从左到右的,所以先进行8/6,再9.
之前提到过/运算符对于两个整型,将舍弃结果的小数部分,如果两个操作符至少含有一个float类型变量,则会保留小数部分。
如果两个操作符都是double类型,则结果为double类型;两者都是float则结果为float类型,浮点类型在默认情况下为double类型,所以操作数一个为float,一个为double,则结果为double。
查看数据类型的方法
#include
cout << typeid(变量名).name() << endl;
在C++中,共存在11中整型和3中浮点类型,针对不同类型数据的运算,C++会执行类型的转换。
1.将一种算术类型的值赋予另一种算术类型的变量时,会对值进行转换。
2.表达式中含有不同类型时,会对其进行转换,例如之前提到的float/double得到的结果类型为double。
3.将参数传给函数时,会进行转换。
C++允许将一种类型的值赋给另一种类型的变量。其值会被转换为接受变量的类型。
double num1 = 6.8;
int num2 = d1;
cout << typeid(num2).name() << '\n' << "Value:" << a1 << endl;
结果如下:
int
Value:6
结果被转换成了int类型,且直接舍弃了小数部分。
long num1;
short num2 = 8;
num1 = num2;
进行赋值的时候,程序将num2的值扩展为long类型,扩展后得到一个新值,这个值被赋予num1,而num2的内容不变。
转换 | 潜在的问题 |
---|---|
将较大的浮点类型转换为较小的浮点类型,例如double转换为short类型 | 精度降低,值将超出取值范围,结果未知 |
将浮点型转换为整形 | 小数部分丢失,原来的值可能超出取值范围,结果将未知 |
将较大的整型转换为较小的整型,如long转换为short | 原来的值超出取值范围,通常只复制右边的字节 |
之前提到过的bool类型也是如此,将非零值转换为1,也就是true,将零值转换为0,也就是false
以大括号的形式进行初始化常用于给复杂的数据类型提供值列表,初始化时不允许缩窄,比如浮点型转换为整型时将被禁止,但不同的整型之间转换或者将整型转换为浮点型可能会被允许。
这一点尤为重要,请看下方代码:
short num1 = 68;
short num2 = 69;
short num3 = num1 + num2;
在程序执行过程中,编译器首先将num1和num2的值转换为Int类型,然后将得到的结果转换为short类型,因为结果将被赋予short类型。整体情况是因为计算机将int作为最自然的类型,所以,在使用int进行计算时,运算速度是最快的。
其次,当涉及到两种类型的运算时,较小的类型将被转换为较大的类型。详细情况如下:
1.如果有一个操作数的类型时long double,则将另一个操作数转换为long double;
2.否则,如果有一个操作数的类型是double,则将另一个操作数转换为double;
3.否则,如果有一个操作数的类型是float,则将另一个操作数的类型转换为float;
4.否则,说明操作数都是整型,因此执行整型提升。
5.在这种情况下,如果两个操作数都是有符号或无符号的,且其中一个操作数的级别比另一个低。则转换为级别较高的类型。
6.如果一个操作数为有符号的,另一个操作数为无符号,且无符号操作数的级别比有符号操作数高,则将有符号操作数转换为无符号操作数所属的类型。
7.否则,如果有符号类型可表示无符号类型的所有可能取值,则将无符号操作数转换为有符号操作数所属的类型。
8.否则,将两个操作数都转换为有符号类型的无符号版本。
格式如下所示:
(typename) value;
typename (value);
其余强制转换符将在后面提到。
auto的作用是让编译器能够根据初始值的类型推断变量的类型。在不指定变量类型的情况下,编译器将把变量的类型设置称为与初始值相同。
auto num1 = 100;
auto num2 = 6.8;
auto num3 = 6.8e+22;
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。