C++入门教程之五:运算符(上)
Posted zqqrx0546
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++入门教程之五:运算符(上)相关的知识,希望对你有一定的参考价值。
C++入门教程之五:运算符(上)
运算符是C++的精华之一,是程序设计中最重要的一环之一,也是理解一个程序的关键。许多人倒在了运算符的学习中(也有人倒在了指针上),因此,学会C++的运算符是学习C++的关键所在。下面我将逐一介绍C++的运算符
算术运算符
算术运算符是最基本的运算符,包括小学我们就学过的+、-、×、÷和取余。
a+b;//加
a-b;//减
a*b;//乘
a/b;//除
a%b;//取余
没错,用法就是这么简单。
唯一值得讲一下的是取余。如a%b
,小学我们学过,a÷b=c……d,则有a%b=d,读作“a模b等于d”。如果a或者b不是整数类型,则程序在编译的时候,会先将a和b向下取整为整数再进行运算,如果没法取整,则会报错。
此外还有自加运算符++
和自减运算符--
,用法如下
a++;
++a;
a--;
--a;
其中前两个表示把a的值加1,后两个表示把a的值减1。一般来说,前两个表达式差别不大,你想用哪个用哪个。但是,它们还是有区别的。假设有下面一个程序:
int x=3;
cout << (x++)+(++x) << endl;
输出:
8
具体过程是这样的:首先x被赋值为3。第二行中先运行x++,x的值先放到了表达式中,然后再加1,也就是说,运算完x++后,x的值被加了1,变成4,但是表达式变成3+(++x)
,然后,运行++x
,它的作用与x+1
完全一样,先将x的值加1,变为5,再将5放到表达式中,整个表达式变为3+5
,即8。
--
运算符与++
运算符相同,只不过加1变成了减1。给大家出一道题,大家可以在评论区中打出答案:
int x=3;
int y=4;
cout << (x++)/3+(--y)*2-(x--)%6+(y++)*3-(y--) << endl;//求输出
关系运算符
关系运算符包括==、!=、>=、<=、<、>。
用法:
int a=1,b=2;
if(a==b)cout << "a等于b" << endl;
if(a!=b)cout << "a不等于b" << endl;
if(a<=b)cout << "a小于等于b" << endl;
if(a>=b)cout << "a大于等于b" << endl;
if(a<b)cout << "a小于b" << endl;
if(a>b)cout << "a大于b" << endl;
输出:
a不等于b
a小于等于b
a小于b
由此可知,关系运算符运算的是两个数字之间的关系,如果为真,则表达式的值为1,代表真;如果为假,则表达式的值为0,代表假。关系运算符通常用于控制语句中作为条件使用。
逻辑运算符
逻辑运算符包括||(逻辑或)、&&(逻辑与)、!(逻辑非)
基本用法如下:
bool a=true,b=false;
cout << (a||b) << endl;
cout << (a&&b) << endl;
cout << (!a) << endl;
输出结果:
1
0
0
a或b意味着a和b中只要有一个是真的,那么整个表达式都是真的;a与b意味着a和b中只要有一个是假的,那么整个表达式都是假的。!a
意味着如果a为真,这表达式为假;如果a为假,则表达式为真。
a | b | a&&b |
a||b |
---|---|---|---|
0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 |
1 | 1 | 1 | 1 |
注意:只有变量的值是0时,这个变量才会被认为是假的,否则都会被认为是真的。
赋值运算符
=
是C++中的赋值运算符。用法非常简单
a=1;
其中表示把1赋值给a。赋值运算符=表示把右边的值赋值给左边的变量。赋值的意思是:用要赋的值替换掉变量中原有的值。赋值有几点要求:首先,赋的值必须与变量的数据类型一样,比如:
int a;
a="Hello"
就会报错。
第二点,=
的左边必须是变量,不能是常量。如
const int a=0;
a=1;//错误
1=2;//错误
此外,还有一种赋值操作,即运算符=
,如a+=2
,等同于a=a+2
。如:
int a=1;
cout << a+=1 << endl;
cout << a-=3 << endl;
cout << a/=-1 << endl;
cout << a*=5 << endl;
cout << a%=2 << endl;
输出:
2
-1
1
5
1
其他运算符
sizeof()
sizeof返回变量的字节数。比如
int a=1;
cout << sizeof(a);
输出:
4
此外,还可以sizeof(数据类型)
,输出的是该数据类型的变量所占的字节数,如:
cout << sizeof(int) << endl;
cout << sizeof(long long) << endl;
cout << sizeof(float) << endl;
cout << sizeof(double) << endl;
输出:
4
8
4
8
?:
有关这个运算符的知识,参见我之前的文章C++入门教程之三:控制语句
强制转换类型
用法是:
float a=1.5
cout << (int)a << endl;
输出:
1
强制转换类型可以将任意类型的值转换为括号内数据类型,但不会改变原变量的值。但是强制转换类型是有范围的,只能在(unsigned) int
, (unsigned) long
, (unsigned) long long
, (unsigned) float
, (unsigned) double
,bool
和char
类型之间转换。(char
类型在转换时会变成ASCII码)
,
用法如下:
int a=1;
cout << a+=3,a++,a%3 << endl;
输出结果:
2
逗号运算符的意思是:执行一连串运算,其值为整个由逗号连接的列表中的最后一项的值。
此外,还有指针运算符和成员运算符,关于它们的知识将在后面讲到。
以上是关于C++入门教程之五:运算符(上)的主要内容,如果未能解决你的问题,请参考以下文章