表达式是一个公式,其中操作数通过使用运算符连接在一起以计算一个值。操作数可以是函数引用、变量、数组元素或常量。

让我们来看一个例子:

a-b;

在上面的表达式中,减号(-)是一个运算符,a和b是两个操作数。

C中有四种类型的表达式:

  • 算术表达式
  • 关系表达式
  • 逻辑表达式
  • 条件表达式

每种类型的表达式接受特定类型的操作数,并使用特定的运算符集。对特定表达式的评估产生特定的值。

例如:

x = 9/2 + a-b;

整个上述行是一个语句,不是表达式。等号后的部分才是表达式。

1.png

算术表达式

算术表达式是由操作数和算术运算符组成的表达式。算术表达式计算出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 22加6,得到值8。
62/8 + 8 28除以4,得到值2。
12/8 +8 * 28乘以2,得到值16。
1 + 8 * 212除以8,得到值1。
1 + 168乘以2,得到值16。
171加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;
}

输出

2.png

逻辑表达式

  • 逻辑表达式是计算出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;
}

输出

3.png

让我们看一个"| |"运算符的简单例子

#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;
}

输出

4.png

条件表达式

  • 条件表达式是一种在条件为真时返回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;
}

输出

5.png

标签: c语言, c语言教程, c语言技术, c语言学习, c语言学习教程, c语言下载, c语言开发, c语言入门教程, c语言进阶教程, c语言高级教程, c语言面试题, c语言笔试题, c语言编程思想