C 那些可爱的小陷阱计算机等级考试

文章作者 100test 发表时间 2010:01:01 13:03:29
来源 100Test.Com百考试题网


  我们沿袭忠于标准的传统,还是首先来看一个标准中的例子

  ??=define arraycheck(a,b) a??(b??) ??!??! b??(a??)

  这真是一段XE的代码,你看懂什么意思了么?好吧这次厚道点立刻上答案:

  #define arraycheck(a,b) a[b] || b[a]

  这个代码尽管是用来演示三元转义符的,但是我看到这个宏定义暗示另一个非常古怪的语法,在没有重载[]运算符的情况下,a[b]和b[a]总是完全等价的。所以在任何你使用了a[1]的时候,你都可以替换成1[a],尽管这看起来非常诡异。似乎这一点颇得标准编写者的喜爱,居然在一个完全无关的场合明里暗里地提了一下这个事情。

  好吧我们言归正传,这些诡异的用法是C 的三元转义符,所幸它们数量不多,请看下表:

三元符 用以替代 三元符 用以替代 三元符 用以替代
??= # ??( [ ??

相关文章


VC助手VisualAssist的简介计算机等级考试
vc之游戏五子棋的核心算法计算机等级考试
C Builder中用socketapi来写网络通讯程序(2)计算机等级考试
C Builder中用socketapi来写网络通讯程序(1)计算机等级考试
C 那些可爱的小陷阱计算机等级考试
C 虚函数及虚函数表解析计算机等级考试
用VisualC SDK操作INI文件计算机等级考试
C usingnamespacestd详解计算机等级考试
求A^B的最后三位数表示的整数计算机等级考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛