相关疑难解决方法(0)

什么是C ??!??!操作员呢?

我看到一行C看起来像这样:

!ErrorHasOccured() ??!??! HandleError();
Run Code Online (Sandbox Code Playgroud)

它编译正确,似乎运行正常.看起来它正在检查是否发生了错误,如果有错误,它会处理它.但我不确定它在做什么或它是如何做的.看起来程序员正试图表达他们对错误的看法.

我从来没有??!??!在任何编程语言中看过以前,我无法在任何地方找到它的文档.(Google对搜索字词没有帮助??!??!).它做了什么以及代码示例如何工作?

c operators trigraphs

1911
推荐指数
4
解决办法
25万
查看次数

C++中Trigraph序列的目的是什么?

根据C++'03标准2.3/1:

在进行任何其他处理之前,每个出现的以下三个字符序列之一("三字符序列")被表1中指示的单个字符替换.

----------------------------------------------------------------------------
| trigraph | replacement | trigraph | replacement | trigraph | replacement |
----------------------------------------------------------------------------
| ??=      | #           | ??(      | [           | ??<      | {           |
| ??/      | \           | ??)      | ]           | ??>      | }           |
| ??’      | ˆ           | ??!      | |           | ??-      | ˜           |
----------------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

在现实生活中,这意味着代码printf( "What??!\n" );将导致打印,What|因为??!是一个被|字符替换的三字符序列.

我的问题是使用三字母的目的是什么?使用三字母有什么实际优势吗?

UPD:在答案中提到一些欧洲键盘没有所有标点字符,所以非美国程序员必须在日常生活中使用三字母组合?

UPD2:Visual Studio 2010默认情况下关闭了三字母支持.

c++ trigraphs c++03

119
推荐指数
6
解决办法
4万
查看次数

C++代码中`??? - `的含义

我从一些遗留代码中看到了以下代码:

 size_t a = 1 ???- 2 :0;
Run Code Online (Sandbox Code Playgroud)

符号???-在C++ 中的含义是什么?我该怎么理解呢?

谢谢!

c++ trigraphs

61
推荐指数
3
解决办法
4024
查看次数

逃生顺序为?在c ++中

我正在查看c ++中字符串中字符的转义序列,我注意到有一个问号的转义序列.谁能告诉我为什么会这样?这看起来有点奇怪,我无法弄清楚是什么?做一个字符串.谢谢.

c++ string escaping trigraphs

23
推荐指数
1
解决办法
3726
查看次数

神秘的线条"??!??!" 在遗留代码中

我正在重构一些非常古老的遗留代码,这些代码充满了错误和非常可疑的做法,至少对于现代标准而言.现在我跑过一条线,我根本无法破译:

p并且k是类型int *

return p??!??!k?p?*p:sizeof(*k):0;
Run Code Online (Sandbox Code Playgroud)

当我看到它时,我无法相信自己的眼睛 - 我知道?运算符,但它的语法bool ? trueresult : falseresult??操作符都没有意义(懒惰的评估确实不适用于此处),我无法在任何地方找到该神秘运算符的引用.

如果有人对此事有所了解,那真的很酷.

c c++ operators

23
推荐指数
2
解决办法
2912
查看次数

这些奇怪的问号是什么意思?

我遇到了一些奇怪的代码.它甚至看起来都不像C,但令我惊讶的是它编译并在我的C编译器上运行.这是C语言的一些非标准扩展吗?如果是这样,它的原因是什么?

??=include <stdio.h>

int main()
??<
  const char arr[] = 
  ??<
    0xF0 ??! 0x0F,
    ??-0x00,
    0xAA ??' 0x55
  ??>;

  for(int i=0; i<sizeof(arr)/sizeof(*arr); i++)
  ??<
    printf("%X??/n", (unsigned char)arr??(i??));
  ??>

  return 0;
??>
Run Code Online (Sandbox Code Playgroud)

输出:

FF
FF
FF
Run Code Online (Sandbox Code Playgroud)

c trigraphs

5
推荐指数
1
解决办法
542
查看次数

标签 统计

trigraphs ×5

c++ ×4

c ×3

operators ×2

c++03 ×1

escaping ×1

string ×1