meaning of `???-` in C++ code
我从一些旧代码中看到了以下代码:
1
| size_t a = 1 ???- 2 :0; |
C++中符号EDOCX1 0是什么意思?我该如何理解?
谢谢您!
- ???只能用于注释。:)
- 为这个接线员想出一个假意思是很有趣的。???-可能是"真的吗?"???我震惊了!operator,一个?,向编译器提示很少使用第一个分支。
- 必须提到的WTF操作员:??!???!
- @巴塔舒给你带来乐趣。对那些阅读你的代码的人感到沮丧。P
- @马克·加西亚是的,这只是一个笑话,就像江户记1(3)接线员一样。
- 存在三角图来解决两个问题。首先,一些嵌入式系统只支持非常有限的字符集,可能无法显示或输入"^"和"~"等字符。其次,一些操作系统支持多个代码页,这些代码页对"~","^",""等有不同的编码。确保代码支持所有代码页变体的唯一方法是使用三角图(此处将介绍IBM EBCDIC!).
- @Jamesanderson,有趣的是,我总是在假设a-z是连续的,而不是不使用三角图的代码上乱写,嗯?
- @Jamesanderson嵌入式系统?你在抽烟吗?三角图不会影响程序功能或目标系统。它们实际上是源文件的字符编码,方便用户在键盘上丢失某些键。IBM游说反对他们的反对,因为据推测,它允许他们避免强迫大型机用户标准化EBCDIC文本编码。但是大型机与嵌入式系统恰恰相反。
- @potatoswatter——我的意思是开发环境不能支持这些字符。现在,您大多是从一个更大的"普通"机器交叉编译,但在过去,您经常不得不使用自定义硬件。
- @chris——或"0"<"a"或"2"-30将生成值为2的整数。
- @Markgarcia离??/只有一个偏移,这意味着反斜杠,它将注释扩展到下一行…
- 这个问题每两周被问一次,为什么还没有结束呢??
事实上:
??-是~的三角图。
三角学是一个古老的时代…在我们中的一些人出生之前。
以前,有些字符并不总是受支持。一个不知道的程序员会试图输入这样一个字符,结果却发现它不在键盘上!
图片来源:http://www.myoldmac.net/cgi-data/forum/phpbb2/viewtopic.php?t=305</Sub>
因此添加了三角图,允许程序员在这些字符不存在时(无论是在编码中还是在键盘上)访问它们的功能。
现在,它们已经过时了,在混淆读者方面比绕过旧标准更有效。
所以,要么代码真的很旧,要么作者是个混蛋。
- 我看到通知在我点击前大约10毫秒出现,我对此无能为力:p
- 谢谢您!但这对我来说很奇怪。
- 我投(B)票,作者是个混蛋。a = 1 ? ~2 : 0是a = ~2的长手。三元运算符存在的原因只有一个:混淆代码。加上三角图使瓷砖变模糊,蛋糕就结冰了。
- "三角形来自一个古老的时代。"——在1989年的ANSIC标准中,三角形被添加到了语言中。它们从未被删除;2011年的ISO C标准仍然有。
- 如果作者不是一个混蛋,而且在这种情况下真的需要三角图,那么为了更容易理解,应该把它写成? ??-,而不是???-。
- 作为一个小小的补充:C++委员会标准计划在过去的5年中删除它们。然而,有一些反对意见,他们仍然存在。
- @实际上,我认为如果作者关心可读性,它应该是? compl 2,而不是? ??- 2。
??-是tilde ~字符的三角图;该行相当于:
??-是~字符的一个三角图。其他一些三角图包括:
1 2 3 4 5 6 7
| ??= for #
??/ for \
??' for ^
??! for | |
现在很少使用三角图。
- "现在很少使用三角图。"—不是这样的。
- 可能也在编程拼图和编码高尔夫网站上
- @雅兹,我想他们会和~一起,超过??-,如果只是为了字符计数的话。