相关疑难解决方法(0)

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

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

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

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

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

c operators trigraphs

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

这个笑脸胡子的表情是什么:"<:] {%>"?

我遇到了以下程序,它编译时没有错误甚至是警告:

int main(){
  <:]{%>; // smile!
}
Run Code Online (Sandbox Code Playgroud)

实例.

程序做了什么,笑脸表达是什么?

c++ expression emoticons digraphs

297
推荐指数
4
解决办法
1万
查看次数

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++ ×3

trigraphs ×3

c ×1

c++03 ×1

digraphs ×1

emoticons ×1

expression ×1

operators ×1