【C++语言】彻底搞懂++i和i++

目录

1 概念

2 前缀递增示例

2.1 示例代码

2.2 解题思路

3 后缀递增示例

3.1 示例代码

3.2 解题思路

4 混合表达式示例

4.1 示例代码

4.2 解题思路


1 概念

++是单目运算符:++i是前缀递增,先参与表达式运算,然后再自增;i++是后缀递增,表示先进行递增,然后再参与表达式运算。

2 前缀递增示例

2.1 示例代码

#include<iostream>
using namespace std;
int main(int argc, char* argv[])
{
	int a = 10;
	int b = 0;
    b = a++;
	cout << "b = " << b << endl;
	cout << "a = " << a << endl;

	system("pause");
	return 0;
}

2.2 解题思路

解题过程中,为了方便理解,分别用两个盒子来表示变量a和变量b;

第一步:初始时,a的值为10,b的值为0

第二步:b = a++; 此时的a++为后缀递增,因此a++先参与表达式的运算,也就是把a的值赋给b,此时b的值也就是10;

第三步:然后再进行自增运算a = a + 1 = 10 + 1 = 11;

第四步:

      输出结果:

            b = 10 

            a = 11

3 后缀递增示例

3.1 示例代码

#include<iostream>
using namespace std;
int main(int argc, char* argv[])
{
	int a = 10;
	int b = 0;
    b = ++a;
	cout << "b = " << b << endl;
	cout << "a = " << 
<think>嗯,用户问的是C++中'++'符号的来源意义。首先,我需要回忆一下C++的历史。C++是从C语言发展而来的,由BjarneStroustrup在1983年创建。那么,为什么选择“++”这个符号呢?记得在C语言中,++递增运算符,用于将变量的值加1。这可能象征着C++在C的基础上进行了扩展增强。所以名字中的“++”可能意味着C语言的改进或升级。不过用户可能想知道更具体的背景,比如Stroustrup当时是怎么想到用这个符号的,有没有官方解释? 然后,用户提供的引用里提到了C++的string类的使用示例,比如s1 =s2这样的操作。这可能运算符重载有关,但用户的问题是关于语言名称中的++符号,而不是代码中的运算符。不过需要确保回答不混淆这两者。另外,用户可能想知道“++”在C++中的语义是否C中的一致,比如前置后置的区别,但问题更侧重于名称的由来而不是运算符的使用。需要明确区分这两个方面。还要检查是否有相关的历史文档或Stroustrup的著作中提到过命名原因。例如,在他的书《The C++ ProgrammingLanguage》中可能有解释。根据记忆,Stroustrup曾提到“++”表示C的增强,就像递增操作一样,C++是C的下一个阶段。 此外,要确保回答中提到的内容准确,比如C++最初的名字是“Cwith Classes”,后来改为C++,这个时间线原因也需要说明。可能还需要提到“++”在编程中的常见用途,比如循环中的增量操作,但重点还是名称的由来。 用户可能还想知道是否其他命名选项被考虑过,比如“C+”,但最终选择了“++”来强调比C更进一步。这可能涉及到命名的决策过程,如果有相关资料的话需要引用。最后,要确保回答结构清晰,先解释来源,再说明意义,引用相关的资料,比如Stroustrup的书籍或官方文档。同时,生成的相关问题要围绕C++的历史、运算符的使用设计理念展开。</think>### C++中'++'符号的由来与含义 #### 1. **符号来源** C++的名称直接来源于C语言的**递增运算符`++`**。该符号在C语言中表示变量的**自增操作**(如`i++`将变量`i`的值加1)。C++创始人**本贾尼·斯特劳斯特卢普(Bjarne Stroustrup)**选择这一符号,旨在表明C++是C语言的**自然扩展与增强**,正如`i++`意味着“在C的基础上更进一步”[^1][^2]。 最初,C++被称为“**带类的C**”(C with Classes),后因新增了更多特性(如模板、异常处理等),斯特劳斯特卢普将其更名为C++,以体现其与C语言的继承超越关系[^1]。 --- #### 2. **符号意义** - **语言演进**:`++`象征C++在C语言的基础上添加了**面向对象、泛型编程**等现代特性,例如类、继承、模板等[^1][^3]。 - **运算符保留**:C++完全保留了C语言的`++`运算符功能,同时扩展了其在**运算符重载**中的使用(如自定义类的递增操作)[^2]。 ```cpp // 示例:运算符重载 class Counter { public: Counter& operator++() { // 前置++ value++; return *this; } private: int value = 0; }; ``` --- #### 3. 设计哲学 斯特劳斯特卢普强调C++的**零开销抽象原则**(Zero-overhead Abstraction),即在保持C语言高效性的同时,通过`++`符号体现**渐进式改进**的理念,而非彻底颠覆[^1][^3]。例如: - 兼容C语法,允许直接调用C函数库; - 引入`const`、`inline`等特性替代宏定义,提升类型安全[^3]。 ---
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值