第二十四篇:C++的运算符

1.运算符与运算值的解释 

运算符运算值是构成一道计算题的主要元素,所谓的运算符,指的是+,-,*,/....等运算符号。运算值就是运算符操作的资料,例如:1+2 中,1和2都是运算值。  

2.一级运算符与二级运算符 

一个运算符计算时,操作两个运算值,称为二级运算符,例如 1+2 ,操作1和2这两个运算值,执行相加操作。如此类推,操作一个运算值的将称为一级运算符,而一级运算符是“-”号,相信学过数学的都知道,这个叫做负号,令其数字变成负值,例如:-1 ,如同上列所说,只操作一个运算值。 

3.运算公式 

运算公式是由运算符与运算值结合的公式叫做运算公式,作用是依照指定的运算值进行运算符的计算。例子如下: 

Int a,b,c; //声明三个整数变量

b=10; //给b赋值10

C=1; //给c赋值1

A=b+c; //b+c的结果赋值给a

//注意,C++大小写是有区分的,由于wps的关系,自动大写了,我也不太会用wps这些工作软件 

4.运算符的顺序 

运算公式中预算符的计算顺序,称为运算符的顺序,比如在日常生活数学老师和我们说,先乘除后加减,运算符的优先顺序我会在后文排序出表格。 

5.运算符的结合 

一个运算公式内,运算符顺序相同时,按照一般的计算规律,有从左到右从右到左两种顺序,以加减运算为例子,2+3-4 中先计算 2+3 ,之后用 2+3 的和减去 4 ,5-4 ,有关规律请参照后文。

运算符 

“=”运算符的解释 

在学生时代,老师对我们说,“=”号是等于的作用,但是在程序当中,“=”号的功能会和老师所说的“等于”不同,所有,我们不能以“等于”这个观点去理解程序的“=”号。 

请看如下代码: 

Int a,b,c;

B=1;

c=2;

A=b+c; 

以上代码的意思是如果使用“等于”观念来思考,可能觉得没什么差别,就是位置改变了。 

请看如下代码:

Int a;

A=a+1;

当看了此段代码,你在用“等于”观念来思考,你会觉得,一切都觉得很奇怪。这时候你就应该用程序的观念去思考这段代码。 

现在,我很大家说明程序的“=”号,在你宣告一个变量时,那个变量就是你系统内存里面的一小部分,但是我们如何输入一些信息到变量呢 ? 这时候我们需要“=”号,例如 a=1; 就是把数字 1 放进了变量a里面,所以“=”号起的作用是赋值,例如 小明给小红一支笔 。因此,“等于”观念的“=”号和程序里的“=”号是不同的。 

算数运算符

 

运算符号

名称

运算规律

程序例子

实例

+

加法

从左到右

A + B

7 + 2

-

减法

从左到右

A - B

7 - 2

*

乘法

从左到右

A * B

7 * 2

/

除法

从左到右

A / B

7.0 / 2

%

求余

从左到右

A % B

7 % 2

当你看到上面的表格,你就知道这是算数运算符。

 / 一列中,发现实例的 7.0 / 2 ,其实加上小数是确保结果正确,不然输出的结果是整数3。详细情况请看C++变量详细解释系列教程。 

当然,“-”号可以作成负数,例如:“-1”。 

在执行运算时,有如下两个规则决定运算顺序: 

1.运算符号运算顺序。

2.运算值的结合规律。 

计算算数运算符时,要按照[先乘除后加减]的方式进行运算。 

在程序中,运算也是如此,在一段包含加减乘除的运算代码里,顺序与算数相同。那我们再说说 “%”号,此符号在程序中,优先于加减。 

运算顺序

运算符号

运算规律

*,/,%

从左到右

+,-

从左到右

使用例子:

Int a;

a=10*2/5+8-1;

Cout<<a<<endl;

 

输出结果:         

11                 

请按任意键继续. . .

 那我们现在分析下过程。 

1.10 * 2 / 5 + 8 - 1 //先乘除,后加减

2.20 / 5 + 8 - 1 //从左到右计算

3.4 + 8 - 1 //从左到右计算

4.12 - 1 //从左到右计算

5.11 //结果 

这就是程序的计算过程。

 

简单的运算符 

上面的一小段,主要想在这段说明下简单化的运算符。此类运算符使运算更简洁。 

在上面介绍了算数运算符,那么有没有算数运算符的简单化呢? 答:有。 

以下表格A的值为9。 

运算符号

运算规律

运算例子

原式

结果

+=

从右到左

A += 3

A=A+3

12

-=

从右到左

A -= 3

A=A-3

6

*=

从右到左

A *= 3

A=A*3

27

/=

从右到左

A /= 3

A=A/3

3

以上四个运算符运算顺序是一样,没有谁是优先的。注意的是,它是从右到左运算的。 

例子:

int a,b;

A=10;

B=20;

B*=a+=10; 

输出结果:         

400                

请按任意键继续. . . 

让我们分析下计算过程。 

B * = a + = 10 //原式

B * = (a = a + 10) //从右到左,而且顺序相同,加上括号是为了分辨,括号不起作用。

B * =  a // 此时:B * = 20

B = B * a // 此时:B = 20 * 20

B // 此时 B = 400 

以上就是计算过程。 

 

对比运算符 

对比运算符用于比较两边的的运算值作用,当结果为时(数字代表为 1 ),当结果为时,(数字代表为 0 )。

运算符号

运算符名称

运算规律

例子

==

等于

从左到右

A == B

>

大于

从左到右

A > B

<

小于

从左到右

A < B

>=

大于或等于

从左到右

A >= B

<=

小于或等于

从左到右

A <= B

!=

不等于

从左到右

A != B

说明一下,由于字体问题,“==”号看上去像“=”,其实“==”号是两个“=”组成的。 

以下为使用例子: 

Int a,b;

A=10;

B=20;

Cout<<“a == b 结果:”<<(a==b)<<endl;

cout<<“a > b 结果:”<<(a>b)<<endl;

Cout<<“a < b 结果:”<<(a<b)<<endl;

Cout<<“a >= b 结果:”<<(a>=b)<<endl;

Cout<<“a <= b 结果:”<<(a<=b)<<endl;

Cout<<“a != b 结果:”<<(a!=b)<<endl;

  

输出结果:         

A == B 结果:0     

A >  B 结果:0     

A <  B 结果:1     

A >=  B 结果:0    

A <=  B 结果:1    

A !=  B 结果:1    

请按任意键继续. . .

 

那么我们来分析一下这段代码吧。

上面我已经说过,当真为 1,假为 0

A == B,A是10,B是20,怎么可能等于呢,所有结果为 0,即为

A > B,A是10,B是20,B大于A,所有结果为 0,即为

A < B,A是10,B是20,B大于A,所以结果为 1即为

A >= B,A是10,B是20,因为A不大于B,也不等于B,所以结果为 0,即为

A <= B,A是10,B是20,因为A小于B,但不等于B,所以结果为 1,即为

A != B,A是10,B是20,A不等于B,所以结果为 1,即为

 

对于上面的分析,可能你产生疑问为什么 A <= B 结果是1呢? 

答:因为 “<=”号和 “>=”号 只要实现了其中一个条件就行。 

 

逻辑运算符 

C++的逻辑运算符于条件中执行真,假值运算,以计算结果的真或假控制程序过程。执行运算时,结果为 0 代表假,1 代表真。 

运算符号

名称

运算规律

例子

说明

&&

从左到右

A && B

当A和B两者为真时,输出结果为1,否则0

||

或者

从左到右

A || B

当A或B其中一个为真时,输出结果为1,否则0

!

相反

从右到左

! A

当A为真时,输出结果为0。当A为假时,输出结果为1

 !” 是一级运算符,并且是从右到左运算的运算符。 

上面中,逻辑运算符操作的运算值 AB 可以是判断式的执行结果。 

下面是例子: 

Int a,b;

A=20;

B=10;

Cout<<(a>b)&&(a<b)<<endl;

Cout<<(a>b)||(a<b)<<endl;

Cout<<!(a>b)<<endl;

输出结果:         

(a>b)&&(a<b):0    

(a>b)||(a<b): 1    

!(a>b):0           

请按随意键继续. . .

让我们分析一下结果: 

(a>b)&&(a<b) //首先计算两边括号,a是20,b是10.

1&&0 //a大于b,正确,输出1.a不小于b,错误,输出0

0 //因为两边结果不是为真,所有结果为0

 

(a>b)||(a<b) //首先计算两边括号,a是20,b是10.

1||0 //a大于b,正确,输出1.a不小于b,错误,输出0

1 //因为“||”只要一边为真,结果是为1

 

!(a>b) //首先计算括号,a是20,b是10.

!1 //因为a大于b,所有输出1

0 //因为 “!”在对比值为1的时候,输出0,对比值为0时,输出1

 

以上就是分析过程。

 

++,--,sizeof 运算符 

++,-- 运算符 

程序经常会用到类似的运算

A = A + 1;

那么,有没有简单的写法呢?是有的。

++ A 或者 A ++

++A 和 A++ 的区别,++A 是先把A加1后赋值给A,再把A传出。A++ 则是先把A传出,再把A+1赋值给A。两者的区别如下代码: 

int a,b;

a=1,b=1;

cout<<a++<<endl<<++b<<endl; 

输出结果:          

1                   

2                   

请按随意键继续. . . 

从上面代码与结果看到,A++ 与 ++A 的区别。 

--与++运算符的不同就是是减1,而返回值的规律和++A,A++相同。 

 

Sizeof 运算符 

Sizeof 运算符用于数据类型,或变量在内存所占位置大小,语法如下: 

Sizeof(数据类型) 

Sizeof(变量) 

Sizeof 的详细使用如下: 

int a;

cout<<sizeof(int)<<endl;

cout<<sizeof(a)<<endl; 

输出结果:

4         

4         

让我分析下意思。 

第一个4是说明int类型占内存的位置大小。

第二个4是说明a变量占内存位置大小。

有人会问,为什么变量a是4呢?

答:因为变量a是int类型,所有占内存位置是4。

 

运算符“,” 

当想要同时宣告多个数据类别相同的变量时,可以使用“”分隔变量,以下同时宣告三个变量。

Int a,b,c

意思代码内,“”运算符有同行执行的意思,在编写程序代码时以“”号分隔时,将被视为同一行。

Cout<<"123", cout<<"456";

以上代码cout以以逗号分隔,这两个cout讲被视为同一行,因此执行结果是 123456 。

if(1>2,2>3,3<4)

{

  cout<<"1"<<endl;

}

以上代码结果 

1                   

请按随意键继续. . . 

If的结果取决于最后的一个条件,3<4 真,所以会输出1

在有“”运算符的判断里,最后一个返回值为关键。

 

条件运算符 “?:” 

条件运算符配合条件,控制执行结果。语法如下:

(条件) ? 结果1 : 结果2 ;

当条件成立时,执行结果1,当条件不成立,执行结果2 

但是“?:”运算符里,可选择执行的结果1和结果2,只容许在单行,不能用大括号扩充。因此,结果1和结果2的最后是不用再加上“;”了。 

在程序中,如果使用条件运算符单行执行,就需要在后加上结尾符号。但是在函数中,并且未成为独立执行,那么最后就不用加上结尾符号。以下分别说明条件运算符如何以“单行执行”使用,和如何以“函数内执行”或“前置执行”。 

 

单行执行

(a>b) ? cout<<a<<endl : cout<<b<<endl;

“,”运算符的单行执行

(a>b)?

Cout<<a<<endl ,

Cout<<a<<endl

:

Cout<<b<<endl ,

Cout<<b<<endl

;

函数内单行执行

Cout<<((a>b)?"a":"b")<<endl;

前置执行

#define Copox(a,b)  (a>b)?"a":"b"

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2013-08-01 01:21  GOD攀  阅读(240)  评论(0编辑  收藏  举报