Table of Contents
Chapter 4 Expressions
Basic concepts
Evaluation order
Arithmetic operators
Logical and relational operator
Logical AND&&, Logical OR||
Relational operators
Assignment operator
The assignment operation satisfies the right associative law
Conditional operator?:
Bit operators
sizeof operator
Type conversion
Implicit type conversion
Display conversion
Home Backend Development C#.Net Tutorial Chapter 4 C++: Expression Concept-Application of Operators

Chapter 4 C++: Expression Concept-Application of Operators

Aug 06, 2018 am 10:40 AM
c++

Introduces the operators defined by the language itself and used for built-in type operands, and briefly introduces several operators defined by the standard library.

Chapter 4 Expressions

Basic concepts

  • Unary operator: Acts on an operand Operator

  • Binary operator: Operator that acts on two operands

  • The function call is also the same A special operator that has no limit on the number of operands

  • Lvalue: When an object is used as an lvalue, the identity of the object (location in memory) is used ).

  • Rvalue: When an object is used as an rvalue, the value (content) of the object is used.

Evaluation order

  • In most cases, the evaluation order is not explicitly specified. There are only four operators that explicitly specify the order in which operands can be evaluated:

    1. 逻辑与运算符(&&):先求左侧才求右侧,只有当左侧为真时才计算右侧的值2. 逻辑或运算符(||)3. 条件运算符(?:)4. 逗号运算符(,)
    Copy after login

Arithmetic operators

bool b = true;bool b2 = -b;   //b2是true。-1不等于0,所以b2的值为真
Copy after login
  • C 11 stipulates that quotients are the same Round to 0 (that is, cut off the decimal part directly).

  • If m%n is not equal to 0, its sign is the same as m:

    (-m)/n 和 m/(-n) 都等于 -(m/n)
    m%(-n) 等于 m%n(-m)%n 等于 -(m%n)
    Copy after login

Logical and relational operator

Relational operators act on arithmetic or pointer types, and logical operators act on any type that can be converted into a Boolean value.
- Their return values ​​are all Boolean type.

Logical AND&&, Logical OR||

  • Short-circuit evaluation

Relational operators

The evaluation results of relational operators are Boolean values, and using them together will produce unexpected results:

if(i < j < k)   //若k大于1则为真
Copy after login

should be changed to:

if(i < j && j < k)
Copy after login

Assignment operator

  • The left operand of the assignment operator must be a modifiable lvalue.

  • If the left and right operands of the assignment operator have different types, the right operand will be converted to the type of the left operand.

The assignment operation satisfies the right associative law

int i, j;
i = j = 0;  //正确,都被赋值为0
Copy after login

Conditional operator?:

cond ? expr1 : expr2
Copy after login

Satisfies the right associative law, and the operands are generally from right to left sequence combination.

Bit operators

act on operands of integer type and a standard library type called bitset.

~   :位求反
<<  :左移
>>  :右移
&   :位与
^   :位异或|   :位或
Copy after login

sizeof operator

Returns the number of bytes occupied, and the resulting value is a size_t type.

有如下两种形式:sizeof(type)sizeof expr
Copy after login
  • satisfies the right associative law.

Type conversion

Implicit type conversion

In most casesarrays are converted to pointers.
- When an array is used as a decltype keyword argument, or as the operand of operators such as the address operator (&), sizeof, and typeid, the above conversion does not occur.

Display conversion

  • Named forced type conversion

cast-name<type>(expression)
Copy after login

cast-name has the following types:

dynamic_cast        //运行时类型识别static_cast         //只要不包含底层const,均可进行强制类型转换,告诉编译器不在乎精度损失const_cast          //只能改变运算对象的底层const,称为去掉cast性质(cast away the const)。将常量对象转换为非常量对象。reinterpret_cast    //
Copy after login

Reference: C Primer Fifth Edition

Introduces operators defined by the language itself and used for built-in type operands, and briefly introduces several operators defined by the standard library.

Related articles:

Chapter 1 C: Function return values, GNU compiler commands

Chapter 2 C: Variables and basic type

The above is the detailed content of Chapter 4 C++: Expression Concept-Application of Operators. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Hot Topics

Java Tutorial
1653
14
PHP Tutorial
1251
29
C# Tutorial
1224
24
C# vs. C  : History, Evolution, and Future Prospects C# vs. C : History, Evolution, and Future Prospects Apr 19, 2025 am 12:07 AM

The history and evolution of C# and C are unique, and the future prospects are also different. 1.C was invented by BjarneStroustrup in 1983 to introduce object-oriented programming into the C language. Its evolution process includes multiple standardizations, such as C 11 introducing auto keywords and lambda expressions, C 20 introducing concepts and coroutines, and will focus on performance and system-level programming in the future. 2.C# was released by Microsoft in 2000. Combining the advantages of C and Java, its evolution focuses on simplicity and productivity. For example, C#2.0 introduced generics and C#5.0 introduced asynchronous programming, which will focus on developers' productivity and cloud computing in the future.

Where to write code in vscode Where to write code in vscode Apr 15, 2025 pm 09:54 PM

Writing code in Visual Studio Code (VSCode) is simple and easy to use. Just install VSCode, create a project, select a language, create a file, write code, save and run it. The advantages of VSCode include cross-platform, free and open source, powerful features, rich extensions, and lightweight and fast.

Golang and C  : Concurrency vs. Raw Speed Golang and C : Concurrency vs. Raw Speed Apr 21, 2025 am 12:16 AM

Golang is better than C in concurrency, while C is better than Golang in raw speed. 1) Golang achieves efficient concurrency through goroutine and channel, which is suitable for handling a large number of concurrent tasks. 2)C Through compiler optimization and standard library, it provides high performance close to hardware, suitable for applications that require extreme optimization.

The Performance Race: Golang vs. C The Performance Race: Golang vs. C Apr 16, 2025 am 12:07 AM

Golang and C each have their own advantages in performance competitions: 1) Golang is suitable for high concurrency and rapid development, and 2) C provides higher performance and fine-grained control. The selection should be based on project requirements and team technology stack.

Python vs. C  : Learning Curves and Ease of Use Python vs. C : Learning Curves and Ease of Use Apr 19, 2025 am 12:20 AM

Python is easier to learn and use, while C is more powerful but complex. 1. Python syntax is concise and suitable for beginners. Dynamic typing and automatic memory management make it easy to use, but may cause runtime errors. 2.C provides low-level control and advanced features, suitable for high-performance applications, but has a high learning threshold and requires manual memory and type safety management.

Golang and C  : The Trade-offs in Performance Golang and C : The Trade-offs in Performance Apr 17, 2025 am 12:18 AM

The performance differences between Golang and C are mainly reflected in memory management, compilation optimization and runtime efficiency. 1) Golang's garbage collection mechanism is convenient but may affect performance, 2) C's manual memory management and compiler optimization are more efficient in recursive computing.

Do you use c in visual studio code Do you use c in visual studio code Apr 15, 2025 pm 08:03 PM

Writing C in VS Code is not only feasible, but also efficient and elegant. The key is to install the excellent C/C extension, which provides functions such as code completion, syntax highlighting, and debugging. VS Code's debugging capabilities help you quickly locate bugs, while printf output is an old-fashioned but effective debugging method. In addition, when dynamic memory allocation, the return value should be checked and memory freed to prevent memory leaks, and debugging these issues is convenient in VS Code. Although VS Code cannot directly help with performance optimization, it provides a good development environment for easy analysis of code performance. Good programming habits, readability and maintainability are also crucial. Anyway, VS Code is

How to execute code with vscode How to execute code with vscode Apr 15, 2025 pm 09:51 PM

Executing code in VS Code only takes six steps: 1. Open the project; 2. Create and write the code file; 3. Open the terminal; 4. Navigate to the project directory; 5. Execute the code with the appropriate commands; 6. View the output.

See all articles