C++ 表达式

C++ 表达式 首页 / C++入门教程 / C++ 表达式

C++表达式由根据语言规则排列的运算符,常量和变量组成。它还可以包含返回值的函数调用。一个表达式可以包含一个或多个操作数,零个或多个运算符来计算值。每个表达式都会产生一些值,该值将在赋值运算符的帮助下分配给变量。

C++表达式示例:

(a+b) - c
(x/y) -z
4a2 - 5b +c
(a+b) * (x+y)

表达式可以具有以下类型:

  • Constant expressions(常数表达式)
  • Integral expressions(整数表达式)
  • Float expressions(浮点表达式)
  • Pointer expressions(指针表达式)
  • Relational expressions(关系表达式)
  • Logical expressions(逻辑表达式)
  • Bitwise expressions(按位表达式)
  • Special assignment expressions(特殊表达式)
C++ Expression

如果该表达式是上述表达式的组合,则这些表达式称为复合表达式。

常数表达式

常数表达式是仅包含常数值的表达式。它是一个表达式,其值在编译时确定,但在运行时求值。它可以由整数,字符,浮点数和枚举常量组成。

在以下情况下使用常量:

  • 在下标声明符中用于描述数组绑定。
  • 在switch语句中的case关键字之后使用。
  • 它用作enum中的数值
  • 它指定位字段的宽度。
  • 在预处理器 #if 中使用

在上述情况下,常量表达式可以具有整数,字符和枚举常量。我们可以将static和extern关键字与常量一起使用以定义功能范围。

下表显示了包含常量值的表达式:

常量表达式
x =(2/3)* 4(2/3)* 4
extern int y = 67 67
int z = 43 43
static int a = 56 56

让我们看一个包含常量表达式的简单程序:

#include <iostream>
using namespace std;
int main()
{
    int x;       //变量声明。
    x=(3/2) + 2; //常量表达式
    cout<<"Value of x is : "<<x; //显示 x 的值。
    return 0;
}

在上面的代码中,我们首先声明了整数类型的'x'变量。声明后,我们将简单的常量表达式分配给'x'变量。

Value of x is : 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<<"Enter the values of x and y";
    cin>>x>>y;
    z=x+y;
    cout<<"\n"<<"Value of z is :"<<z;//显示 z 的值。
    return 0;
}

在上面的代码中,我们声明了三个变量,即x,y和z。声明后,接受用户输入的值" x"和" y"。然后,我们将'x'和'y'的值相加并将其结果存储在'z'变量中。

输出

Enter the values of x and y                                                                                                     
8                                                                                                                               
9                                                                                                                               
Value of z is :17     

让我们看看整数表达式的另一个示例。

#include <iostream>
using namespace std;
int main()
{
    
   int x;  //变量声明
   int y=9;   //变量初始化
   x=y+int(10.0);   //积分表达式
   cout<<"Value of x : "<<x;  //显示 x 的值。
   return 0;
}

在上面的代码中,我们声明了两个变量,即x和y。我们将表达式(y + int(10.0))的值存储在'x'变量中。

Value of x : 19       

浮点表达式

浮点表达式是在执行所有显式和隐式转换后生成浮点值作为输出的表达式。

以下是float表达式的示例:

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 <<"value of z is :"  << z<<std::endl; //显示 z 的值。
   return 0;
}

输出

value of z is :14.5       

让我们看看浮点表达式的另一个示例。

#include <iostream>
using namespace std;
int main()
{
   float x=6.7;   //变量初始化
   float y;     //变量声明
   y=x+float(10);  //浮动表达式
   std::cout <<"value of y is :"  << y<<std::endl; //显示 y 的值
   return 0;
}

在上面的代码中,我们声明了两个变量,即x和y。声明后,我们将表达式(x + float(10))的值存储在变量'y'中。

输出

value of y is :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 <<"value of second element of an array : "  << *ptr<<std::endl;
   return 0;
}

在上面的代码中,我们声明了数组和指针ptr。我们将基地址分配给变量" ptr"。分配地址后,我们增加指针" ptr"的值。当指针增加时," ptr"将指向数组的第二个元素。

输出

value of second element of an array : 2

关系表达式

关系表达式是产生布尔类型的值的表达式,该值可以为true或false。也称为布尔表达式。当在关系运算符的两边使用算术表达式时,首先对算术表达式求值,然后比较它们的结果。

以下是关系表达式的示例:

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<<"Value of y is :"<<y; //显示 y 的值。
    return 0;
}

在上面的代码中,我们声明了两个变量,即" a"和" b"。声明后,我们在变量之间应用了关系运算符,以检查" a"是否大于" b"。

输出

Value of y is :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"的值向右移动三位。让我们通过图示来理解。

C++ Expression

让我们看一个简单的例子。

#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 <<"Values of 'a' and 'b' are : " <<a<<","<<b<< std::endl;
 return 0;
}

在上面的代码中,我们声明了两个变量,即" a"和" b"。然后,我们使用链式分配表达式为两个变量分配了相同的值。

输出

Values of 'a' and 'b' are : 80,80  

Note: 使用链接的赋值表达式,在声明时不能将值赋给变量。例如,int a = b = c = 90是无效的语句。

  • 嵌入式分配表达式

嵌入式赋值表达式是一种赋值表达式,其中,赋值表达式包含在另一个赋值表达式中。

通过示例让我们理解。

#include <iostream>
using namespace std;
int main()
{
 int a; //变量声明
 int b; //变量声明
 a=10+(b=90); //嵌入式赋值表达式
 std::cout <<"Values of 'a' is " <<a<< std::endl;
 return 0;
}

在上面的代码中,我们声明了两个变量,即" a"和" b"。然后,我们应用了嵌入式分配表达式(a = 10 +(b = 90))。

输出

Values of 'a' is 100  
  • 复合赋值表达式

复合赋值表达式是将赋值运算符和二进制运算符组合在一起的表达式。

例如,

在上面的语句中," a"是变量,而" + ="是复合语句。

通过示例让我们理解。

#include <iostream>
using namespace std;
int main()
{
  int a=10;  //变量声明
  a+=10;   //复合赋值
  std::cout << "Value of a is :" <<a<< std::endl;//显示 a 的值。
  return 0;
}

在上面的代码中,我们声明了一个变量" a",并为该变量分配了10个值。然后,我们将复合赋值运算符(+ =)应用于'a'变量,即a + = 10等于(a = a + 10)。该语句将" a"的值增加10。

输出

Value of a is :20  

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

微服务架构核心20讲 -〔杨波〕

白话法律42讲 -〔周甲徳〕

Nginx核心知识150讲 -〔陶辉〕

Web协议详解与抓包实战 -〔陶辉〕

OpenResty从入门到实战 -〔温铭〕

移动端自动化测试实战 -〔思寒〕

图解 Google V8 -〔李兵〕

业务开发算法50讲 -〔黄清昊〕

去无方向的信 -〔小麥〕

好记忆不如烂笔头。留下您的足迹吧 :)