本文概述
- 算术表达式
- 关系表达
- 逻辑表达式
- 条件表达式
让我们来看一个例子:
a-b;
在上面的表达式中,减号(-)是运算符,而a和b是两个操作数。
C中存在四种类型的表达式:
- 算术表达式
- 关系表达
- 逻辑表达式
- 条件表达式
例如:
x = 9/2 + a-b;
上面的整行都是语句,而不是表达式。等于之后的部分是一个表达式。
文章图片
算术表达式算术表达式是由操作数和算术运算符组成的表达式。算术表达式计算类型为int,float或double的值。
当一个表达式仅包含整数操作数时,则称为纯整数表达式;当它仅包含实数操作数时,称为纯实数表达式;当它同时包含整数和实数操作数时,则称为混合模式表达式。
算术表达式的求值
通过一次执行一个运算来评估表达式。运算符的优先级和关联性决定了单个运算的评估顺序。
【c表达式】当执行单个操作时,可能会发生以下情况:
- 当两个操作数均为整数类型时,将执行算术运算,并且运算结果将为整数值。例如,3/2将产生1而不是1.5,因为小数部分将被忽略。
- 当两个操作数均为float类型时,将执行算术运算,并且运算结果将为实数值。例如,2.0 / 2.0将产生1.0,而不是1。
- 如果一个操作数是整数类型,而另一个操作数是实数类型,则将执行混合算术。在这种情况下,第一个操作数将转换为实数操作数,然后执行算术运算以产生实数值。例如,6 / 2.0将产生3.0,因为将6的第一个值转换为6.0,然后执行算术以产生3.0。
表达评估 | 每个操作的说明 |
---|---|
6*2/( 2+1 * 2/3 +6) +8 * (8/4) | 给出了一个表达式。 |
6*2/(2+2/3 + 6) + 8 * (8/4) | 2乘以1, 得到值2。 |
6*2/(2+0+6) + 8 * (8/4) | 2除以3, 得到值0。 |
6*2/ 8+ 8 * (8/4) | 将2加到6, 得出值8。 |
6*2/8 + 8 * 2 | 8除以4, 得到值2。 |
12/8 +8 * 2 | 6乘以2, 得到值12。 |
1 + 8 * 2 | 12除以8, 得到值1。 |
1 + 16 | 8乘以2, 得到值16。 |
17 | 将1加到16, 得到值17。 |
- 关系表达式是用于比较两个操作数的表达式。
- 这是用于决定是否应采取措施的条件。
- 在关系表达式中,数字值不能与字符串值进行比较。
- 关系表达式的结果可以是零或非零值。在此,零值等效于false,非零值等效于true。
关系表达 | 描述 |
---|---|
x%2 = = 0 | 此条件用于检查x是否为偶数。如果x是偶数, 则关系表达式的结果为1, 否则为0。 |
a!=b | 用于检查a是否不等于b。如果a不等于b, 则此关系表达式的结果为1, 否则为0。 |
a+b = = x+y | 用于检查表达式“ a b”是否等于表达式“ x y”。 |
a> =9 | 用于检查a的值是否大于或等于9。 |
#include <
stdio.h>
int main()
{int x=4;
if(x%2==0)
{
printf("The number x is even");
}
else
printf("The number x is not even");
return 0;
}
输出量
文章图片
逻辑表达式
- 逻辑表达式是计算零或非零值的表达式。
- 做出决定是一个复杂的测试条件。
逻辑表达式 | 描述 |
---|---|
( x > 4 ) & & ( x < 6 ) | 这是一个测试条件, 用于检查x是否大于4并且x小于6。仅当两个条件都为真时, 条件的结果才为真。 |
x > 10 || y < 11 | 这是一个用于检查x是否大于10或y小于11的测试条件。如果两个条件中的任何一个都为真值, 则测试条件的结果为true。 |
! ( x > 10 ) & & ( y = = 2 ) | 这是一个测试条件, 用于检查x是否不大于10并且y等于2。如果两个条件都为真, 则条件的结果为true。 |
#include <
stdio.h>
int main()
{
int x = 4;
int y = 10;
if ( (x <
10) &
&
(y>5))
{
printf("Condition is true");
}
else
printf("Condition is false");
return 0;
}
输出量
文章图片
让我们看一个简单的“ | |”示例算子
#include <
stdio.h>
int main()
{
int x = 4;
int y = 9;
if ( (x <
6) || (y>10))
{
printf("Condition is true");
}
else
printf("Condition is false");
return 0;
}
输出量
文章图片
条件表达式
- 条件表达式是如果条件为true则返回1的表达式,否则返回0。
- 条件运算符也称为三元运算符。
假设exp1,exp2和exp3是三个表达式。
exp1吗? exp2:exp3
上面的表达式是一个基于exp1表达式的值进行评估的条件表达式。如果表达式exp1的条件成立,则最终条件表达式由exp2表示,否则由exp3表示。
让我们通过一个简单的例子来理解。
#include<
stdio.h>
#include<
string.h>
int main()
{
int age = 25;
char status;
status = (age>22) ? 'M': 'U';
if(status == 'M')
printf("Married");
else
printf("Unmarried");
return 0;
}
输出量
文章图片