C语言教程-C 表达式
表达式是一个公式,其中操作数通过使用运算符连接在一起以计算一个值。操作数可以是函数引用、变量、数组元素或常量。
让我们来看一个例子:
a-b;
在上面的表达式中,减号(-)是一个运算符,a和b是两个操作数。
C中有四种类型的表达式:
- 算术表达式
- 关系表达式
- 逻辑表达式
- 条件表达式
每种类型的表达式接受特定类型的操作数,并使用特定的运算符集。对特定表达式的评估产生特定的值。
例如:
x = 9/2 + a-b;
整个上述行是一个语句,不是表达式。等号后的部分才是表达式。
算术表达式
算术表达式是由操作数和算术运算符组成的表达式。算术表达式计算出int、float或double类型的值。
当表达式只包含整数操作数时,称为纯整数表达式;当只包含实数操作数时,称为纯实数表达式;当包含整数和实数操作数时,称为混合模式表达式。
算术表达式的计算
通过逐个执行一次操作来计算表达式。运算符的优先级和结合性决定了单个操作的计算顺序。
执行单个操作时,可能发生以下情况:
- 当两个操作数都是整数类型时,进行算术运算,操作的结果将是整数值。例如,3/2将得到1,而不是1.5,因为忽略了小数部分。
- 当两个操作数都是浮点类型时,进行算术运算,操作的结果将是实数值。例如,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)
表达式求值 | 每个操作的描述 |
---|---|
62/( 2+1 2/3 +6) +8 * (8/4) | 给出了一个表达式。 |
62/(2+2/3 + 6) + 8 (8/4) | 将2乘以1,得到值2。 |
62/(2+0+6) + 8 (8/4) | 2除以3,得到值0。 |
62/ 8+ 8 2 | 2加6,得到值8。 |
62/8 + 8 2 | 8除以4,得到值2。 |
12/8 +8 * 2 | 8乘以2,得到值16。 |
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 age = 25;
char status;
status = (age>22) ? 'M': 'U';
if(status == 'M')
printf("Married");
else
printf("Unmarried");
return 0;
}
输出
逻辑表达式
- 逻辑表达式是计算出0或非零值的表达式。
- 它是一个用于做复杂测试条件的表达式。
让我们来看一些逻辑表达式的例子。
逻辑表达式 | 描述 | ||
---|---|---|---|
(x > 4) && (x < 6) | 这是一个测试条件,用于检查x是否大于4且x是否小于6。只有当两个条件都为true时,测试条件的结果才为true。 | ||
x > 10 \ | \ | y < 11 | 这是一个测试条件,用于检查x是否大于10或y是否小于11。如果其中任何一个条件为true,则测试条件的结果为true。 |
! (x > 10) && (y == 2) | 这是一个测试条件,用于检查x是否不大于10且y是否等于2。只有当两个条件都为true时,测试条件的结果才为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;
}
输出
条件表达式
- 条件表达式是一种在条件为真时返回1,否则返回0的表达式。
- 条件运算符也称为三元运算符。
条件运算符的语法
假设exp1、exp2和exp3是三个表达式。
exp1 ? exp2 : exp3
上述表达式是一个条件表达式,它基于exp1表达式的值进行评估。如果表达式exp1的条件为true,则最终条件表达式由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;
}
输出