为什么没有“< - ”运算符?

时间:2014-04-07 16:31:08

标签: c

我正在阅读K&amp; R C书,并在优先级表中通过了这个-->运算符。所以,我想知道是否有一个类似的运算符,即<--,并编写了以下程序:

#include<stdio.h>
void main()
{
   int x = 5;
   while(0 <-- x)
       printf("%d",x);
}

它工作得非常好。那么为什么不是&#t; t&lt; - 不被视为运营商? (因为它不在优先表中!)它的优先级是什么?

3 个答案:

答案 0 :(得分:8)

-->不是一个运算符,它是两个运算符; (邮政)减少和减少。 C在大多数情况下是空白不可知的,所以:

x --> y
/* is the same as */
x-- > y

<--也是一样的想法:

x <-- y
/* is the same as */
x < --y

也许您将->-->混为一谈。 ->取消引用指针以获取它引用的类型的成员。

typedef struct
{
    int x;
} foo;

int main(void)
{
    foo f = {1};
    foo *fp = &f;
    printf("%d", fp->x);
    return 0;
}

<-根本就不是运营商。

答案 1 :(得分:2)

这不是运营商,而是两个运营商:<--。代码与

相同
#include<stdio.h>
void main()
{
   int x = 5;
   while(0 < --x)
       printf("%d",x);
}

答案 2 :(得分:2)

在我看来,这只是一个“小于”&lt;运算符后跟减少变量x( - )。它不是一个运营商,而是两个运营商。并且 - 优先于&lt;。