c语言条件运算符是什么意思?

Python033

c语言条件运算符是什么意思?,第1张

c语言条件运算符是软件编程中的一个固定格式,使用这个算法可以使调用数据时逐级筛选。

条件运算操作会首先计算条件,然后根据条件的计算结果,再决定要计算两个表达式中的哪一个。在计算完条件之后,有一个序列点。如果结果不等于 0(如果条件计算结果为 true),则只有第二个操作数(也就是表达式 1)会被计算,并且表达式 1 的值就是整个表达式的结果。

另一方面,如果结果为 0(如果条件计算结果为 false),那么只有第三个操作数(也就是表达式 2)会被计算,并且表达式 2 的值就是整个表达式的结果。以这种方式,条件运算符代表了在程序流中的条件式跳转,因此,有时候可以与 if-else 语句相互替代。

c语言的主要特点:

1、广泛性。C语言的运算范围的大小直接决定了其优劣性。C语言中包含了34种运算符,因此运算范围要超出许多其它语言,此外其运算结果的表达形式也十分丰富。此外,C语言包含了字符型、指针型等多种数据结构形式,因此,更为庞大的数据结构运算它也可以应付。

2、简洁性。9类控制语句和32个关键字是C语言所具有的基础特性,使得其在计算机应用程序编写中具有广泛的适用性,不仅可以适用广大编程人员的操作,提高其工作效率,同时还能够支持高级编程,避免了语言切换的繁琐。

2、结构完善。C语言是一种结构化语言,它可以通过组建模块单位的形式实现模块化的应用程序,在系统描述方面具有显著优势,这一特性也使得它能够适应多种不同的编程要求,且执行效率高。

以上内容参考  百度百科-c语言

计算机具有逻辑判断能力,其判断的依据是计算机内部进行逻辑运算的结果。C语言提供了关系运算和逻辑运算,用来构造C程序控制中的条件,实现程序的选择结构和循环结构控制。

关系运算和逻辑运算的结果都是逻辑值,即"真"和"假"。由于C语言中没有逻辑型数据,因此C语言规定用整型数据来表示逻辑值。即:用整数值1表示逻辑"真",用整数值0表示逻辑"假"。在C语言中,将非0就视为"真"。

3.4.1

关系运算符与关系表达式

1.

关系运算符

关系运算实际上是逻辑比较运算,它是逻辑运算中的一种。关系运算符的作用是确定两个数据之间是否存在某种关系。C语言规定的6种关系运算符及其有关的说明见表3-6。

表3-6

算术运算符

运算符

含义

运算对象个数

结合方向

简例

>

大于

双目运算符

自左至右

a>b,3>8

>

=

大于等于

双目运算符

自左至右

a>=b,3>=2

<

小于

双目运算符

自左至右

a<b,3<8

<

=

小于等于

双目运算符

自左至右

a<=b,3<=b

!

=

不等于

双目运算符

自左至右

a!=b,3!=5%7

=

=

恒等于

双目运算符

自左至右

a==b,3==5*a

关系运算符都是双目运算符,其结合性是从左到右结合。优先级分为两级:

高级:<、<=、>、>=

低级:==、!=

关系运算符的优先级低于算术运算符。

2.

关系表达式

用关系运算符将两个表达式连接起来的式子称为关系表达式。它的一般形式为:

表达式1

关系运算符

表达式2

其中,关系运算符指明了对表达式所实施的操作。"表达式1"和"表达式2"是关系运算的对象,它们可以是算术表达式、关系表达式、逻辑表达式、赋值表达式和字符表达式。但一般关系运算要求关系运算符连接的两个运算对象为同类型数据。例如:

a+b>3*c

两个算术表达式的值作比较

(a=b)<(b=10%c)

两个赋值表达式的值作比较

(a<=b)==(b>c)

两个关系表达式的值作比较

'A'!='a'

两个字符表达式的值作比较

关系式只有两种可能的结果:或者它所描述的关系成立,或者这个关系不成立,所以说一个关系表达式描述的是一种逻辑判断。若关系成立,说明关系式表述的关系是"真"的,称逻辑值为"真",用1表示;若关系不成立,说明关系式表述的关系是"假"的,称逻辑值为"假",用0表示。所以关系表达式的运算结果一定是逻辑值。

进行关系运算时,先计算表达式的值,然后再进行关系比较运算。例如:

a=2,b=3,c=4,则上述关系表达式的值为:

a+b>3*c

(5>12)关系不成立

表达式结果值为0(假)

(a+=b)<(b*=10%c)

(5<6)

关系成立

表达式结果值为1

(真)

(a<=b)==(b>c)

(1==0)关系不成立

表达式结果值为0(假)

'A'!='a'

(65!=97)关系成立

表达式结果值为1(真)

以关系表达式"a+b>3*c"为例,因为算术运算的优先级高于关系运算,所以先计算a+b和3*c的值,结果分别为5和12,再将5和12进行关系比较,其运算结果为0。

在表达式中连续使用关系运算符时,要注意正确表达含义,注意运算优先级和结合性。

例如,变量x的取值范围为"0≤x≤20"时,不能写成"0<=x<=20"。因为关系表达式"0<=x<=20"的运算过程是:按照优先级,先求出"0<=x"的结果,再将结果1或0作"<=9"的判断,这样无论x取何值,最后表达式一定成立,结果一定为1。这显然违背了原来的含义。此时,就要运用下面介绍的逻辑运算符进行连接,即应写为:"0<=x

&&

x<=9"。

3.4.2

逻辑运算符与逻辑表达式

1.逻辑运算符

C语言规定的3种逻辑运算符及其有关的说明见表3-7。

表3-7

逻辑运算符

运算符

含义

运算对象个数

结合方向

简例

&&

逻辑与

双目运算符

自左向右

a&&b,3>8&&a==b

||

逻辑或

双目运算符

自左向右

a||b,3<=b8||a==b

!

逻辑非

单目运算符

自右向左

!a,!a==b

逻辑运算要求运算对象为"真"(非0)或"假"(0)。这三种逻辑运算符的运算规则可用表3-8的真值表表示:

表3-8

逻辑运算真值表

a

b

a&&b

a||b

!a

!b

0

0

0

0

1

1

0

非0

0

1

1

0

非0

0

0

1

0

1

非0

非0

1

1

0

0

在一个逻辑表达式中,可以含有多个逻辑运算符,其优先级是:"!"最高,"&&"次之,"||"最低;逻辑运算优先级低于所有关系运算,而"!"优先级高于所有算术运算。

例如:某程序中有如下说明:int

a=3,b=1,

x=2,

y=0;则:

(a>b)

&&

(x>y)

的值为1。

a>b

&&

x>y

的值为1。

注意:①②两式是等价的,因为"&&"运算优先级低于关系运算,故括号可以省略。

(y||b)

&&

(y||a)

的值为1。

y||b

&&

y||a

的值为1。

注意:③④两式结果虽然一样,但两式的含义不同。③式中由于括号的优先级高于"&&",因此,先计算"y||b"和"y||a"后,再将两个结果进行"&&"运算。而④式由于"&&"的优先级高于"||",故要先计算"b&&y",其结果为0,再计算"y||0",其值也为0,最后计算"0||a",结果为1。由此可见,运算符的优先级制约着表达式的计算次序。

!a

||

a>b

的值为1。

此式中"!"的优先级高于">",而

">"的优先级高于"||",故先计算"!a",其值为0,再计算"a>b",其值为1,最后计算"0||1",值为1。

3.4.3

条件运算符与条件表达式

条件运算符是C语言中唯一具的三目运算符,就是说它有三个运算对象。条件运算符的形式是"?

:"由它构成的表达式称为条件表达式。其形式为:

表达式1

?

表达式2

:

表达式3

条件运算符的"?"个":"总是成对出现的。条件表达式的运算功能是:先计算表达式1的值,若值为非0,则计算表达式2的值,并将表达式2的值作为整个条件表达式的结果;若表达式1的值为0,则计算表达式3的值,并将表达式2的值作为整个条件表达式的结果。例如有以下条件表达式:

(a>b)?a+b:a-b

当a=8,b=4,c=3时,求解条件表达式的过程如下:

先计算关系式a>b,结果为1,因其值为真,则计算a+b的结果为12,这个12就是整个条件表达式的结果。请特别注意,此时不再计算表达式a-b了。如果关系式a>b的结果为0,就不再计算表达式a+b了。这一点在应用中很重要。

条件表达式的优先级高于赋值运算,但低于所有关系运算、逻辑运算和算术运算。其结合性是自右向左结合,当多个条件表达式嵌套使用时,每个后续的":"总与前面最近的、没有配对的"?"相联系。例如在条件表达式"a>0

?

a/b:a<0

?

a+b:a-b"中,出现两个条件表达式的嵌套,求解这个表达式时先计算后面一个条件表达式"a<0

?

a+b:a-b"的值,然后再与前面的"a>0

?

a/b:"组合。

使用条件表达式可以使程序简洁明了。例如,赋值语句"z=(a>b)?a:b

"中使用了条件表达式,很简洁地表示了判断变量a与b的最大值并赋给变量z的功能。所以,使用条件表达式可以简化程序

例3-8:定义高等数学中常用的符号函数sign的数学定义如下。

.

对应的C函数定义如下:

/*

L3_8.C

*/

double

sign(double

x)

{

return

x>0

?

1:(x==0

?

0:-1)

}