C语言表达式
表达式是一个公式,其中操作数通过使用运算符来相互链接以计算值。操作数可以是函数引用,变量,数组元素或常量。
我们来看一个示例:
在上面的表达式中,减号(-)是运算符,a和b是两个操作数。
C中存在四种类型的表达式:
算术表达式
关系表达式
逻辑表达式
条件表达式
每种类型的表达式都采用某些类型的操作数,并使用一组特定的运算符。评估特定的表达式会产生特定的值。
例如:
以上整行是语句,而不是表达式。等于之后的部分是一个表达式。
算术表达式
算术表达式是由操作数和算术运算符组成的表达式。算术表达式计算类型为int,float或double的值。
当表达式仅包含整数操作数时,则仅包含实数操作数时称为纯整数表达式,即纯实数。表达式,当它同时包含整数和实数操作数时,称为混合模式表达式。
算术表达式的求值
表达式通过一次执行一项操作。运算符的优先级和关联性决定了单个运算的评估顺序。
执行单个运算时,可能会发生以下情况:
当两个操作数均为整数类型时,将执行算术运算,并且运算结果将为整数值。例如,3/2将产生1而不是1.5,因为小数部分将被忽略。
当两个操作数均为float类型时,将执行算术运算,并且运算结果将为实数值。例如,2.0/2.0将产生1.0,而不是1、
如果一个操作数是整数类型,而另一个操作数是实数类型,则将执行混合算术。在这种情况下,第一个操作数将转换为实数操作数,然后执行算术以产生实数值。例如,将6的第一个值转换为6.0,然后执行算术以生成3.0,则6/2.0将产生3.0。
让我们通过一个例子来理解。
6 * 2/(2 + 1 * 2/3 + 6)+ 8 *(8/4)
表达评估 |
每个操作的说明 |
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、 |
关系表达式
关系表达式是用于比较两个操作数的表达式。
这是用来决定是否应该采取措施的条件。
在关系表达式中,数字值不能与字符串值进行比较。
关系表达式的结果可以是零或非零值。在这里,零值等于假,非零值等于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,则测试条件的结果为true。 |
!(x> 10)&&(y = = 2) |
这是一个测试条件,用于检查x是否不大于10并且y等于2、如果两个条件都为真,则条件的结果为真。 |
让我们看一个简单的" &&"运算符程序。
#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;
}
输出