2.4 C++的运算符
2.5 算术运算符与算术表达式
在有了常量和变量之后,我们就应该想到对这些数据进行运算。对此C++引入了运算符,C++的运算符十分的丰富。同加减乘除的数学运算法则相似,在C++中也有其运算符的优先性和结合性。
有:

2.5.3 表达式中各类数值数据间的混合运算
在C++中一个数据可能由不同的数据类型表示,但在进行运算时,不同类型的数据要先转换为同一类型的数据,才可进行运算。 C++在运算时对所有float型数据都按double型数据处理。
数据类型级别高底,依次从右到左,从下到上逐渐增加,其中double级别最高,依次向long,float递减,long向unsigned递减,unsigned向int,int向char和short递减。
| double | float |
| long | |
| unsigned | |
| int |
char,short |
2.5.4 自增(++)和自减(--)运算符
++i(在使用i之前,先使i的值加1)
--i(在使用i之前,先使i的值减1)
i++(在使用i之后,i的值加1)
i--(在使用i之后,i的值减1)
i=3;
cout<<++i;
//此时输出4
cout<<i++;
//此时输出3
2.5.5 强制类型转换运算符
在表达式中不同类型的类型会自动地转换类型,计算。当然有时作者也可以使用强制类型转换运算符将一个表达式转换成所需类型。有(double)a (将a转换成double类型)
例2.4
#include<iostream>
using namespace std;
int main()
{
float x;
int i;
x=3.6;
i=(int)x;
cout<<"x="<<x<<",i="<<i<<endl;
return 0;
}
运行结果:x=3.6,i=3 x的类型仍为float型,值仍等于3.6
2.6 赋值运算符和赋值表达式
2.6.2 赋值过程中的类型转换
(1)将浮点型数据赋给整型变量时,舍弃其小数部分。
(2)将整型数据赋给浮点型变量时,数值不变,但以指数形式储存到变量中。
(3)将一个double型数据赋给float变量时,要注意数值范围不能溢出。
(4)字符型数据赋给整形变量,将字符的ASCII码赋给整型变量。
(5)将一个int,short或long型数据赋给一个char型变量,只将其低8位原封不动地送到char型变量(发生截断)。
例2.5 有符号数据转送给无符号变量
#include<iostream>
using namespace std;
int main()
{
unsigned short a;
short int b=-1;
a=b;
cout<<"a="<<a<<endl;
return 0;
}
运行结果:65535 为什么我给b赋的值是-1,却输出了65535呢?不同类型的整型数据间的赋值归根到底就是一条:按储存单元中的储存形式直接传送。这边有关于补码的知识,我不了解,便不多阐述了。
2.6.4 赋值表达式
一般形式:变量=表达式
C++将赋值表达式作为表达式的一种,使赋值操作不仅可以出现在赋值语句中,而且可以以表达式形式出现在其他语句(如输出语句,循环语句等)中。
2.7 逗号运算符和逗号表达式
逗号运算符,又称为“顺序求值运算符”。一般形式:表达式1,表达式2
逗号表达式的求解过程是:先求解表达式1,再求解表达式2。整个逗号表达式的值是表达式2的值。C语言和C++语言表达能力强,其中一个重要方面就在于它的表达式类型丰富,运算符功能强,因而使用灵活,适应性强。
分享一题:找到1-100的所有素数
#include<math.h>
#include<stdio.h>
int is_prime(int n)
{
int j = 0;
for (j = 2; j <=sqrt(n); j++)
{
if (n % j == 0)
return 0;
}
return 1;
}
int main()
{
int i = 1;
for (i = 1;i<= 100; i++)
{
if (is_prime(i) == 1)
printf("%d\t", i);
}
return 0;
}
本文介绍了C++中的基本运算符,包括算术运算符、自增自减运算符、类型转换等,并探讨了不同数据类型之间的混合运算及赋值过程中的类型转换规则。

3365

被折叠的 条评论
为什么被折叠?



