C++表达式由按语言规则排列的运算符、常量和变量组成。它还可以包含返回值的函数调用。一个表达式可以包含一个或多个操作数、零个或多个运算符来计算一个值。每个表达式都会产生一些值,这些值在赋值运算符的帮助下分配给变量。
C++ 表达式示例:
(a+b) - c (x/y) -z 4a2 - 5b +c (a+b) * (x+y)
常量表达式
积分表达式
浮点表达式
指针表达式
关系表达式
逻辑表达式
按位表达式
特殊赋值表达式
如果表达式是上述表达式的组合,则这种表达式称为复合表达式。
常量表达式是只包含常量值的表达式。它是一个表达式,其值在编译时确定,但在运行时计算。它可以由整数、字符、浮点数和枚举常量组成。
常量用于以下情况:
它在下标声明器中用于描述数组绑定。
它在 switch 语句中的 case 关键字之后使用。
它用作枚举中的数值
它指定位域宽度。
它用于预处理器#if
在上述场景中,常量表达式可以有整数、字符和枚举常量。我们可以使用带有常量的 static 和 extern 关键字来定义函数范围。
下表显示了包含常量值的表达式:
包含常量的表达式 | 常数值 |
---|---|
x = (2/3) * 4 | (2/3) * 4 |
外部整数 y = 67 | 67 |
整数 z = 43 | 43 |
静态int a = 56 | 56 |
让我们看一个包含常量表达式的简单程序:
#include <iostream> using namespace std; int main() { int x; // 变量声明。 x=(3/2) + 2; // 常量表达式 cout<<"x 的值为:"<<x; // 显示 x 的值。 return 0; }
在上面的代码中,我们首先声明了整数类型的“x”变量。声明后,我们将简单的常量表达式分配给“x”变量。
输出
x 的值为:3
整数表达式是在执行所有显式和隐式转换后生成整数值作为输出的表达式。
以下是积分表达式的示例:
(x * y) -5 x + int(9.0) where x and y are the integers.
让我们看一个简单的积分表达式示例:
#include <iostream> using namespace std; int main() { int x; // 变量声明。 int y; // 变量声明。 int z; // 变量声明。 cout<<"输入 x 和 y 的值"; cin>>x>>y; z=x+y; cout<<"\n"<<"z 的值为:"<<z; //显示z的值。 return 0; }
在上面的代码中,我们声明了三个变量,即x、y和z。声明后,我们将用户输入的值设为“x”和“y”。然后,我们将“x”和“y”的值相加,并将它们的结果存储在“z”变量中。
输出
输入 x 和 y 的值 8 9 z 的值为:17
让我们看另一个积分表达式的例子。
#include <iostream> using namespace std; int main() { int x; // 变量声明 int y=9; // 变量声明 x=y+int(10.0); // 变量声明 cout<<"x 的值:"<<x; // 显示 x 的值。 return 0; }
在上面的代码中,我们声明了两个变量,即 x 和 y。我们将表达式 (y+int(10.0)) 的值存储在“x”变量中。
输出
x 的值:19
浮点表达式是在执行所有显式和隐式转换后生成浮点值作为输出的表达式。
以下是浮点表达式的示例:
x+y (x/10) + y 34.5 x+float(10)
让我们通过一个例子来理解。
#include <iostream> using namespace std; int main() { float x=8.9; // 变量初始化 float y=5.6; // 变量初始化 float z; // 变量声明 z=x+y; std::cout <<"z 的值为 :" << z<<std::endl; //显示z的值。 return 0; }
输出
z 的值为:14.5
让我们看另一个浮点表达式的例子。
#include <iostream> using namespace std; int main() { float x=6.7; // 变量初始化 float y; // 变量初始化 y=x+float(10); // 浮点表达式 std::cout <<"y 的值为 :" << y<<std::endl; // 显示 y 的值 return 0; }
在上面的代码中,我们声明了两个变量,即 x 和 y。声明后,我们将表达式 (x+float(10)) 的值存储在变量 'y' 中。
输出
y 的值为:16.7
指针表达式是产生地址值作为输出的表达式。
以下是指针表达式的示例:
&x ptr ptr++ ptr-
让我们通过一个例子来理解。
#include <iostream> using namespace std; int main() { int a[]={1,2,3,4,5}; // 数组初始化 int *ptr; // 指针声明 ptr=a; // 将数组的基地址分配给指针 ptr ptr=ptr+1; // 增加指针的值 std::cout <<"数组第二个元素的值:" << *ptr<<std::endl; return 0; }
在上面的代码中,我们声明了数组和一个指针 ptr。我们将基地址分配给变量“ptr”。分配地址后,我们增加指针'ptr'的值。当指针递增时,'ptr' 将指向数组的第二个元素。
输出
数组第二个元素的值:2
关系表达式是产生布尔类型值的表达式,该值可以为真或假。它也被称为布尔表达式。当关系运算符两边都使用算术表达式时,首先计算算术表达式,然后比较它们的结果。
以下是关系表达式的示例:
a>b a-b >= x-y a+b>80
让我们通过一个例子来理解
#include <iostream> using namespace std; int main() { int a=45; // 变量声明 int b=78; // 变量声明 bool y= a>b; // 关系表达式 cout<<"y 的值为:"<<y; // 显示 y 的值。 return 0; }
在上面的代码中,我们声明了两个变量,即'a'和'b'。声明后,我们在变量之间应用了关系运算符来检查'a'是否大于'b'。
输出
y 的值为:0
让我们看另一个例子。
#include <iostream> using namespace std; int main() { int a=4; // 变量声明 int b=5; // 变量声明 int x=3; // 变量声明 int y=6; // 变量声明 cout<<((a+b)>=(x+y)); // 关系表达式 return 0; }
在上面的代码中,我们声明了四个变量,即'a'、'b'、'x'和'y'。然后,我们在这些变量之间应用关系运算符 (>=)。
输出
1
逻辑表达式是组合两个或多个关系表达式并产生布尔类型值的表达式。逻辑运算符是 '&&' 和 '||' 结合了两个或多个关系表达式。
以下是一些逻辑表达式的示例:
a>b && x>y a>10 || b==5
让我们看一个简单的逻辑表达式示例。
#include <iostream> using namespace std; int main() { int a=2; int b=7; int c=4; cout<<((a>b)||(a>c)); return 0; }
输出
0
位表达式是用于在位级别操作数据的表达式。它们基本上用于移位。
例如:
x=3
x>>3 // 该语句表示我们将三位位置向右移动。
在上面的例子中,'x' 的值为 3,其二进制值为 0011。我们将 'x' 的值向右移动三位。让我们通过图解表示来理解。
让我们看一个简单的例子。
#include <iostream> using namespace std; int main() { int x=5; // 变量声明 std::cout << (x>>1) << std::endl; return 0; }
在上面的代码中,我们声明了一个变量“x”。声明后,我们应用了按位运算符,即右移运算符将一位位置右移。
输出
2
让我们看另一个例子。
#include <iostream> using namespace std; int main() { int x=7; // 变量声明 std::cout << (x<<3) << std::endl; return 0; }
在上面的代码中,我们声明了一个变量“x”。声明后,我们将左移运算符应用于变量“x”以将三位位置向左移动。
输出
56
特殊赋值表达式是可以根据分配给变量的值进一步分类的表达式。
链式分配
链式赋值表达式是使用单个语句将相同的值分配给多个变量的表达式。
例如:
a=b=20 or (a=b) = 20
让我们通过一个例子来理解。
#include <iostream> using namespace std; int main() int a; // 变量声明 int b; // 变量声明 a=b=80; // 链式赋值 std::cout <<"'a' 和 'b' 的值是:" <<a<<","<<b<< std::endl; return 0; }
在上面的代码中,我们声明了两个变量,即'a'和'b'。然后,我们使用链式赋值表达式为两个变量分配了相同的值。
输出
'a' 和 'b' 的值是:80,80
嵌入式赋值表达式
嵌入式赋值表达式是一个赋值表达式,其中赋值表达式包含在另一个赋值表达式中。
让我们通过一个例子来理解。
#include <iostream> using namespace std; int main() { int a; // 变量声明 int b; // 变量声明 a=10+(b=90); // 嵌入赋值表达式 std::cout <<"'a' 的值为" <<a<< std::endl; return 0; }
在上面的代码中,我们声明了两个变量,即'a'和'b'。然后,我们应用嵌入式赋值表达式 (a=10+(b=90))。
输出
'a' 的值为 100
复合赋值
复合赋值表达式是由赋值运算符和二元运算符组合而成的表达式。
例如,
a+=10;
在上面的语句中,'a' 是一个变量,'+=' 是一个复合语句。
让我们通过一个例子来理解。
#include <iostream> using namespace std; int main() { int a=10; // 变量声明 a+=10; // 复合赋值 std::cout << "a 的值为 :" <<a<< std::endl; //显示a的值。 return 0; }
在上面的代码中,我们声明了一个变量 'a' 并为这个变量赋值 10。然后,我们将复合赋值运算符(+=) 应用于'a' 变量,即a+=10 等于(a=a+10)。此语句将 'a' 的值增加 10。
输出
a 的值为:20