这是 - >>旧操作员还是错字/错误?

Set*_*gie 50 c c++ history operators

在我阅读的过程中,我遇到了1993年写的WG14缺陷报告#51(或许是1893年,他们离开了世纪和千年).在那里的代码示例中,显然->>在指向a的指针上使用了拼写的运算符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;
}
Run Code Online (Sandbox Code Playgroud)

我尝试使用C和C++编译器编译此代码,但无法解析任何一个.也许这是C的早期版本中的某些运算符,不再使用了?

这感觉就像这个运营商的名字一样可疑:" - >"?问题,但我不认为这是其他两个运营商的组合,我不知道它是如何划分和有效的.

Vau*_*ato 29

它看起来像是转录过程中的一个问题.在DR 42中存在类似的问题,其中大于号的两倍:http: //www.open-std.org/jtc1/sc22/wg14/docs/rr/dr_042.html


Gra*_*and 23

我在1992年学过C,而且我100%肯定当时没有这样的操作员.

从上下文来看p->>x[5],我们可以推断它似乎与更熟悉的箭头运算符完全相同->.因此可能是一个错字.


或者,在将代码转录为HTML时可能是编码问题.如果你查看该页面的源代码,你可以看到它有一个奇怪的转义代码,文字<>字符:

<TT><B>#include &lt;stdlib.h><BR>
Run Code Online (Sandbox Code Playgroud)

  • 如果是编码问题,为什么`>`中的`>`没有被破坏? (4认同)