c++ - 这是 ->> 一个旧的运算符还是一个错字/错误?

标签 c++ c operators history

在阅读过程中,我遇到了 WG14 Defect Report #51写于 1993 年(或者可能是 1893 年,他们离开了世纪和千年)。在那里的代码示例中,显然在指向 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 早期版本中不再使用的某个运算符?

这感觉有点像 What is the name of this operator: "-->"?问题,但我认为这不是其他两个运算符的组合,我不明白它如何划分并有效。

最佳答案

在转录过程中似乎存在问题。在 DR 42 中有一个类似的问题,其中大于符号加倍:http://www.open-std.org/jtc1/sc22/wg14/docs/rr/dr_042.html

关于c++ - 这是 ->> 一个旧的运算符还是一个错字/错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13050234/

相关文章:

c - 在守护进程中释放信号量

operators - 现金或信用问题

c++ - 增加已经在流末尾的 istream_iterator 的结果是什么?

c++ - 标记为 noexcept 的函数内部可以有异常吗?

c - C 中的素数

c - 读取系统调用表函数地址时内核模块崩溃

c++ - 为什么一行中的多个作业被认为是不好的风格?

c - (10%2) 是什么意思?

c# - 关于 .NET 中垃圾收集器的问题(内存泄漏)

c# - 关闭 Windows 8 Charm Bar