本文介绍了神秘的线" ?? ??"!在传统code的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我重构了一些非常旧的遗留code这是完全错误和非常有问题的做法,至少在现代标准。
:现在我穿过一条线,我根本无法破译跑 P
和 K
的类型为为int *
回P 10 ?? K P&* P:的sizeof(* K):!?0;
当我看到它,我简直不敢相信自己的眼睛 - 我知道
运营商,但它的语法布尔? trueresult:falseresult
和 ??
运营商既不能意义(懒惰的评价也真的不适用于此),不是我能找到一个参考神秘运营商的任何地方。
这将是非常酷的,如果有人流下了对此事的一些情况。
解决方案
这就是所谓的:
C11(ISO / IEC 9899:201X)§5.2.1.1的三字符序列的
??= #
??( [
??/ \
??) ]
??' ^
??< {
??! |
??> }
??- ~
It's also in C++11(ISO/IEC 14882:2011) § 2.3 Trigraph sequences
So after trigraph replacement, the line return p??!??!k?p?*p:sizeof(*k):0;
turns into
return p || k ? p ? *p : sizeof(*k) : 0
Since the ternary operator has a rather low precedence, it's actually:
return (p || k) ? (p ? (*p) : sizeof(*k)) : 0;
这篇关于神秘的线&QUOT; ?? ??&QUOT;!在传统code的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!