[C++][基础]2_表达式

简介:

[C++][基础]2_表达式

2.1   算术操作符

 

2.2   关系操作符和逻辑操作符

 

2.3   位操作符

 

2.4   赋值操作符

 

2.5   自增、自减操作符

 

2.6   箭头操作符

 

2.7   条件操作符

  Eg:

  int i =10j = 20;

  int max = (i > j)  i : j;

 

2.8   sizeof操作符

sizeof其作用就是返回一个对象或者类型所占的内存字节数其返回值类型为size_t

 

2.9   逗号操作符

         逗号表达式是一组由逗号分隔的表达式,这些表达式从左向右计算,但返回的结果是其最右边表达式的值。

Eg:

int i = (2+13+25*3);

     cout << i << endl;

 

2.10 复合表达式的求值

 

2.11 newdelete表达式

 

2.12 类型转换

2.12.1       何时发生隐式转换

  在混合类型的表达式中,用作条件的表达式被转换为bool类型

  用一个表达式初始化某个变量,或将某一个表达式赋值给某个变量,则表达式被转换为该变量的类型。

  Eg:

  int ival = 3.14;   //3.14转为整数

  int *ip;

  ip = 0;                //0转为指针

 

2.12.2       算术转换

  在算术表达式中,会将操作数类型转为表达式中的最大类型。

 

2.12.3       强制转换

强制类型转换符

dynamic_cast

dynamic_cast支持运行时识别指针或引用所指向的对象。

与其他强制类型转换不同,dynamic_cast涉及运行时类型检查。

若绑定到指针或引用的对象不是目标类型对象,失败!若是转换到指针失败,则dynamic_cast结果是0值,若是转换到引用失败,则抛出一个bad_cast异常。

const_cast

const_cast转换掉表达式的const性质。

static_cast

  编译器隐式执行的任何类型转换都可以由static_cast显示完成。

reinterpret_cast

reinterpret_cast通常为操作数的位模式提供较低层次的重新解释。

转换形式cast_type<convert_type>(expression);

Eg:

  const charp = "hello";

  const_cast<char*>(p);


本文转自静默虚空博客园博客,原文链接:http://www.cnblogs.com/jingmoxukong/articles/2181404.html,如需转载请自行联系原作者

相关文章
|
7月前
|
算法 编译器 C++
【C/C++ 泛型编程 应用篇】C++ 如何通过Type traits 判断 Lambda表达式类型?
【C/C++ 泛型编程 应用篇】C++ 如何通过Type traits 判断 Lambda表达式类型?
136 4
|
7月前
|
编译器 C++
C++系列七:表达式
C++系列七:表达式
|
24天前
|
算法 编译器 C++
【C++11】lambda表达式
C++11 引入了 Lambda 表达式,这是一种定义匿名函数的方式,极大提升了代码的简洁性和可维护性。本文详细介绍了 Lambda 表达式的语法、捕获机制及应用场景,包括在标准算法、排序和事件回调中的使用,以及高级特性如捕获 `this` 指针和可变 Lambda 表达式。通过这些内容,读者可以全面掌握 Lambda 表达式,提升 C++ 编程技能。
56 3
|
3月前
|
算法 编译器 程序员
C++ 11新特性之Lambda表达式
C++ 11新特性之Lambda表达式
18 0
|
7月前
|
C++
【C/C++ 编程 入门篇】 if条件判断表达式的使用教程
https://developer.aliyun.com/article/1465430
141 0
|
5月前
|
安全 编译器 C++
C++一分钟之-泛型Lambda表达式
【7月更文挑战第16天】C++14引入泛型lambda,允许lambda接受任意类型参数,如`[](auto a, auto b) { return a + b; }`。但这也带来类型推导失败、隐式转换和模板参数推导等问题。要避免这些问题,可以明确类型约束、限制隐式转换或显式指定模板参数。示例中,`safeAdd` lambda使用`static_assert`确保只对算术类型执行,展示了一种安全使用泛型lambda的方法。
70 1
|
6月前
|
算法 编译器 C++
C++一分钟之—Lambda表达式初探
【6月更文挑战第22天】C++的Lambda表达式是匿名函数的快捷方式,增强函数式编程能力。基本语法:`[capture](params) -&gt; ret_type { body }`。例如,简单的加法lambda:`[](int a, int b) { return a + b; }`。Lambda可用于捕获外部变量(值/引用),作为函数参数,如在`std::sort`中定制比较。注意点包括正确使用捕获列表、`mutable`关键字和返回类型推导。通过实践和理解这些概念,可以写出更简洁高效的C++代码。
57 13
|
6月前
|
C++
C++语言的lambda表达式
C++从函数对象到lambda表达式以及操作参数化
|
6月前
|
C++
C++一分钟之-理解C++的运算符与表达式
【6月更文挑战第18C++的运算符和表达式构成了编程的基础,涉及数学计算、逻辑判断、对象操作和内存管理。算术、关系、逻辑、位、赋值运算符各有用途,如`+`、`-`做加减,`==`、`!=`做比较。理解运算符优先级和结合律至关重要。常见错误包括优先级混淆、整数除法截断、逻辑运算符误用和位运算误解。解决策略包括明确优先级、确保浮点数除法、正确使用逻辑运算符和谨慎进行位运算。通过实例代码学习,如 `(a &gt; b) ? &quot;greater&quot; : &quot;not greater&quot;`,能够帮助更好地理解和应用这些概念。掌握这些基础知识是编写高效、清晰C++代码的关键。
44 3
|
6月前
|
C语言 C++ 容器
c++primer plus 6 读书笔记 第五章 循环和关系表达式
c++primer plus 6 读书笔记 第五章 循环和关系表达式