在阅读中,我看到了1993年(或者也可能是1893年,因为他们遗漏了世纪和千年)撰写的WG14 Defect Report #51。在那里的代码示例中,似乎对一个指向
起初我以为这是一个打字错误,但它在文本中再次出现两次,在回答问题的代码示例中又出现了一次。我很难相信这至少没被两位C语言专家注意到,而只被像我这样的新手发现。它还是代码的重点,非常容易注意到,并且从未被更正。
以下是添加缩进的代码:
struct
的指针使用了一个名为->>
的运算符。我找不到任何运算符优先级表中有它的记录,所以我想知道,它是或曾经是一个运算符吗?如果是,这个运算符做什么(或者过去做了什么)?起初我以为这是一个打字错误,但它在文本中再次出现两次,在回答问题的代码示例中又出现了一次。我很难相信这至少没被两位C语言专家注意到,而只被像我这样的新手发现。它还是代码的重点,非常容易注意到,并且从未被更正。
以下是添加缩进的代码:
#include <stdlib.h>
struct A {
char x[1];
};
main()
{
struct A *p = (struct A *) malloc(sizeof(struct A) + 100);
p->>x[5] = '?'; /* This is the key line [for both them and us] */
return 0;
}
我尝试使用C和C++编译器编译此代码,但两者都无法解析。也许这是一些早期版本的C语言中不再使用的运算符?
这感觉很像这个运算符的名称是什么:“-->”?问题,但我不认为这是两个其他运算符的组合,我不知道它如何被分割并成为有效的。
->>
运算符更容易相信,而该运算符如今已被历史学家所遗忘。安德鲁·科尼格(Andrew Koenig)在1893年仍然活着并对C语言标准进行评论,这种说法介于两者之间。也许他有一个曾祖父?;-) - Steve Jessopoperator->>
还没有被发明。 - Lol4t0->>
,所以我们应该向 这篇 Stack Overflow 帖子 的作者询问。 - halex