惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

MongoDB | Blog
MongoDB | Blog
Recorded Future
Recorded Future
Jina AI
Jina AI
The Register - Security
The Register - Security
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
月光博客
月光博客
博客园 - 三生石上(FineUI控件)
F
Fortinet All Blogs
人人都是产品经理
人人都是产品经理
S
SegmentFault 最新的问题
Apple Machine Learning Research
Apple Machine Learning Research
L
LangChain Blog
Y
Y Combinator Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
GbyAI
GbyAI
The GitHub Blog
The GitHub Blog
Vercel News
Vercel News
博客园 - 【当耐特】
雷峰网
雷峰网
The Cloudflare Blog
阮一峰的网络日志
阮一峰的网络日志
aimingoo的专栏
aimingoo的专栏
云风的 BLOG
云风的 BLOG
I
InfoQ
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google DeepMind News
Google DeepMind News
Security Latest
Security Latest
有赞技术团队
有赞技术团队
L
Lohrmann on Cybersecurity
P
Proofpoint News Feed
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
The Last Watchdog
The Last Watchdog
P
Privacy & Cybersecurity Law Blog
Scott Helme
Scott Helme
Google Online Security Blog
Google Online Security Blog
WordPress大学
WordPress大学
Hacker News - Newest:
Hacker News - Newest: "LLM"
NISL@THU
NISL@THU
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
B
Blog RSS Feed
Cyberwarzone
Cyberwarzone
K
Kaspersky official blog
F
Full Disclosure
Martin Fowler
Martin Fowler
Spread Privacy
Spread Privacy
D
Docker
C
Cisco Blogs
www.infosecurity-magazine.com
www.infosecurity-magazine.com
H
Hacker News: Front Page

博客园 - zim.NET

悼念友人 博客搬家了 函数调用中的黑客技术 3D学习笔记之一句话总结(不断更新中) 这么个女孩,你娶吗(转) 被误传了数千年的七句话(精简版_转载) 找工作故事之篇二 找工作故事之开篇 - zim.NET - 博客园 失落的阳光,陈酿的悲伤——许美静 一行命令解决批量重命名 一个空间换时间算法 求最长公共子序列 最小生成树算法讨论 用EditPlus打造你自己的IDE 将PPT内容导出为JPG图片 C/C++ 误区:fflush(stdin) 关于"extern" 闲谈成员初始化列表 脑筋急转弯3600题
混乱你的代码 - zim.NET - 博客园
zim.NET · 2007-11-01 · via 博客园 - zim.NET

注:这只是觉得好玩,才发上来的,事实上并不实用,但或许看完能对C/C++的历史典故多一点了解呵.
先看一个程序:
??=include <stdio.h>

int main()
??<
 printf("%s","hello,world.??/n");
 
 return 0;
??>

编译运行,OK,输出为hello,world.

为什么能够这样写,这里涉及到一个字符集与字符编码的问题.

我们知道现在的很多计算机用的是ASCII编码,正常情况下,\0x41都是代表'A'.可是ISO/IEC 646规定的所谓的国际标准,
让各国可以将本国的一些字符安排到原来的ASCII中,代替{}[]等字符所占据的位置.即在这些国家的机器里,就没有了
我们程序中经常要用到的[] {} \等字符了.这里便存在一个问题,就是程序的显示.例如假定某国以+替换了{ ,那么在程序中的{输入变成了
+,程序的可读性极差。当然,这个程序仍然能正常编译运行,这和编译器的解释有关,记住编译器只认识\0x..

于是一个补救办法产生了,这就是由C标准委员会推出的“三联符序列”。
三联符序列用来表示那些缺少的字符。

??=  表示 #   ??)   表示]      ??(   表示[
??!  表示 |     ??/   表示\      ??-   表示~
??>  表示 }     ??<   表示(    ??'   表示^

这样可读性要好些了。不过以增加了源文件的字节长度为代价。

而一些C++的设计者们认为这样的方案还不够友好,于是C++中又引入一些“替换记号”。
<%替{      and替&&    and_eq替&=
%>替}    bitor替|   or_eq替|=
<:替[    or替||     xor_eq替^=
:>替]    xor替^   not替!
%:替#    compl替~  not_eq替!=
%:%:替##  bitand替&

对于以上的用诸如<%等两个字符替换原字符的,称之为“二联符”.

/*在VC6。0上测试C++的引入记号,未通过。你可以在GCC下测试一下。*/


参考: 《C/C++深层探索》