c/c++的语法糖

"语法糖"(Syntactic Sugar)指的是 让代码更简洁、可读性更好的一种语言特性,不会引入新的功能,只是对已有语法的更便捷写法,编译后会被还原成更基础的语法结构。

C/C++中经典语法糖有哪些:

1、自增 / 自减运算符:++ / --

2、复合赋值运算符:+=, -=, *=, /=

3、三元运算符:?:

4、数组下标运算符:a[i]

C 设计者亲口承认:这是语法糖!

语法糖:

cpp 复制代码
a[i];

//等价于:

*(a + i);

5、结构体初始化器(C99 / C++11):

语法糖:

Point p = {10, 20};

等价于手动赋值:

Point p; p.x = 10; p.y = 20;

6、范围 for 循环(C++11):

经典 C 是:

cpp 复制代码
for (int i = 0; i < v.size(); i++) { auto x = v[i]; }

C++11 语法糖:

cpp 复制代码
for (auto x : v) { // use x }

编译器会展开成迭代器的 for 循环。

7、Lambda 表达式(C++11+)

现代 C++ 的"超级糖"。

语法糖:

auto f = [](int x){ return x * 2; };

等价于编译器生成一个匿名函数对象类,非常长。

8、智能指针(C++11+)

比如:

auto ptr = std::make_unique<int>(5);

语法糖封装了:

  • new

  • delete

  • RAII

  • 构造 / 析构安全

底层是类 + 模板操作,但写起来像基本类型。

9、基于 initializer_list 的花括号初始化

std::vector<int> v = {1,2,3,4};

语法糖,展开后是调用

std::vector<int> v = std::vector{1,2,3,4};

再进一步是调用 initializer_list 构造函数。

10、运算符重载

C++中, a + b 不是基本操作,而是对 a.operator+(b) 的运算符重载语法糖。

相关推荐
LDR00616 天前
Type-C 快充全面升级!LDR6601 赋能个人护理便携电机,重塑剃须刀 / 理发器新体验
c语言·开发语言
雪碧聊技术16 天前
Tree.js是什么?一文讲透
开发语言·javascript·ecmascript
码云数智-园园16 天前
C++20 Modules 模块详解
java·开发语言·spring
swordbob16 天前
NIO的channel中什么是 fd(File Descriptor,文件描述符)
java·开发语言·nio
源分享16 天前
Java线程同步的多种实现方法(非常详细)
java·开发语言·jvm
Luminous.16 天前
C语言--day30
c语言·开发语言
何以解忧,唯有..16 天前
Go语言循环语句详解:for、range与循环控制
开发语言·算法·golang
謓泽16 天前
C语言不是语法,是通往机器的地图。
c语言·开发语言
云水一下16 天前
从零开始学 PHP 系列(一):PHP 的前世今生与开发环境搭建
开发语言·php
飞天狗11116 天前
零基础JavaWeb入门——第五课第二小节:九大内置对象 · 第2个:response(响应对象)
java·开发语言