一起学 c++(五) 运算符、条件语句

好啦,继续上次的内容,我们来先说下条件运算符。

这是一个三目运算符,貌似也是c++唯一一个这样的运算符,不过它其实很简单。

表达式如下:

Expr1 ? Expr2 : Expr3

意思就是如果Expr1是真,那么返回Expr2,否贼返回Expr3

例如:

int a=10;

int b=a<3 ? 3 : a; //a<3不成立,所以取a,所以b=a

逗号表达式:

(exp1,exp2)

其求职过程是分别求2个表达式的值,并以表达式2的值作为整个逗号表达式的值。

例如:

#include

usingnamespacestd;

voidmain()

{

inta=2,b=4,c=6,x,y;

y=((x=a+b),b+c);

cout<<y<<endl;

cout<<x<<endl;

}

结果为y10x6

需要注意的是:

1.逗号表达式可以是一般形式中的表达式1和表达式2,也可以是逗号表达式。例如以下嵌套关系:

表达式1,(表达式2,表达式3)因此可以把逗号表达式扩展为:

表达式1,表达式2,表达式3

2.在程序中使用逗号表达式,通常为了求逗号表达式的各个值

3.不是所有的逗号的地方都是逗号表达式,所以要注意区分

求字节数运算符:sizeod(exp1)

刚开始看的时候,大家可能都认为这是个函数,但是还是要记住它不是。exp1可以是变量,也可以是某种数据类型的名称

下面来看个很重要的问题,就是运算符的优先级问题,优先级高的先于优先级低的进行运算,如果在一个运算中的优先级相同,则按运算符的结合性所规定的结合方向处理

**优先级** **运算符** **结合性**
1 ()[]->.::++(后置)--(后置) à
2 !~++(前置)--(前置)+ * &(强转)sizeof new delete à
3 .-> à
4 /%* à
5 +- à
6 <<>> à
7 <=<>>= à
8 ==!= à
9 & à
10 ^ à
11 | à
12 && à
13 || à
14 ?: à
15 =*= /=+=-=|=<<=>>= à
16 , à

说到强转,来说下类型转换

C++提供了2中转化机制:一是自动转换,二是强制转换。

自动转换发生在不同数据类型的量混合元算时,由编译器自动完成。转换规则是小类型总是被提升成大类型。以防止精度丢失。

强制转换是通过类型转换运算来实现的:一般形式如下:

(类型说明符)表达式(float) a

关于类型转换我们以后还会说到

下面我们开始接触语句了。

什么是语句,它由由变量声明和表达式构成,将特定的关键和语法,按一定的功能组织起来的语句。

;//这是一个最简单的语句,空语句

float a=1.0f;//声明语句

当然语句不是只有这样,大部分我们会使用复合语句

那么我们先来看看条件语句,顾名思义,就是满足条件才执行的语句喽

条件语句的基本形式:

If(表达式1)

语句1 ;

或者

If(表达式1)

{

语句1 ;

}

我们可以理解为:如果表达式1是真的,那么执行语句1,否则不执行语句1

我建议大家最好都用第二种,有大括号包着,看着比较清晰明白

先来看个简单的例子:

#include

usingnamespacestd;

voidmain()

{

inta=2,b=4;

if(a<b)

{

cout<<"a<b"<<endl;

}

if(a>b)

{

cout<<"a>b"<<endl;

}

}

a2b4a自然小于b,所以a<b为真,就输出了a\\。\\\a>b不满足,所以自然不会进入cout<<”a>b”<<endl

条件语句的其他形式

if-else形式:

if(表达式)

语句1;

else

语句2;

我们可以理解为:如果表达式是真的,那么执行语句1,否则执行语句2.

那么我可以把上面那个例子改下变成:

if(a<b)

{

cout<<"a<b"<<endl;

}else

{

cout<<"a>b"<<endl;

}

结果是一样的

if-else继续引出的就是if-elseif-else,它的表达式是:

if(表达式1)

语句1;

else if(表达式2)

语句2;

else

语句n;

我们可以理解为:如果表达式1为真,那么执行语句1,如果表达式2为真,那么执行语句2……,都不满足的时候,执行语句n

例如我们把之前例子加个等于的判断:

#include

usingnamespacestd;

voidmain()

{

inta=2,b=4;

if(a<b)

{

cout<<"a<b"<<endl;

}

elseif(a==b)

{

cout<<"a==b"<<endl;

}

else

{

cout<<"a>b"<<endl;

}

}

条件语句的基本形式就是这样的,但是不仅仅限于此,嵌套式的条件语句用处更加广泛。

所谓嵌套式if的语句,就是if语句中,执行语句还是if

我们继续拿之前的例子修改下,看下什么是嵌套式的if语句

#include

usingnamespacestd;

voidmain()

{

inta=2,b=4;

if(a!=b)

{

if(a<b)

{

cout<<"a<b"<<endl;

}

else

{

cout<<"a>b"<<endl;

}

}

else

{

cout<<"a==b"<<endl;

}

}

再来看看另一个条件语句switch语句

Switch语句的表达式:

switch (表达式)

{

case
常量表达式1 :

语句1;

break;

case
常量表达式2:

语句2;

break;

default :

语句n;

break;

}

我们可以理解为:表达式的值与之后的常量表达式1,2…n直到都不满足的default进行比较,如果表达式的值与某个常量表达式的值相等,就执行对应的语句。

例如:

#include

usingnamespacestd;

voidmain()

{

inta=2;

switch(a)

{

case1:

cout<<"1"<<endl;

case2:

cout<<"2"<<endl;

case3:

cout<<"3"<<endl;

default:

cout<<"不是1,2,3"<<endl;

}

}

我们执行一下:

结果是

2

3

不是1,2,3

为什么会这样,我们想要的就是2这个结果,仔细观察下就会发现,我们这里没写break;

这个在初期学习的过程中经常出现的问题,所以要注意哦。

所以在每一个条件后面都要加上break;

修改后:

#include

usingnamespacestd;

voidmain()

{

inta=2;

switch(a)

{

case1:

cout<<"1"<<endl;

break;

case2:

cout<<"2"<<endl;

break;

case3:

cout<<"3"<<endl;

break;

default:

cout<<"不是,2,3"<<endl;

break;

}

}

这样就没问题了

个人网站http://www.ravedonut.com/
原文链接: https://www.cnblogs.com/panjiangfy/archive/2011/08/01/cxuexi5.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/29686

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月8日 上午7:07
下一篇 2023年2月8日 上午7:07

相关推荐