关于C#:为什么没有<--运算符?


Why isn't there a “<--” operator?

本问题已经有最佳答案,请猛点这里访问。

我正在阅读K&R C书,并通过优先表中的这个-->操作符。因此,我想知道是否有类似的操作员,即<--,并编写了以下程序:

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

它工作得很好。那么为什么不<--不被认为是一个运算符呢?(因为它不在优先表中!)它的优先级是什么?


-->不是一个运算符,它是两个(后)减量且小于。C在很大程度上是空白不可知论者,因此:

1
2
3
x --> y
/* is the same as */
x-- > y

<--的想法是一样的:

1
2
3
x <-- y
/* is the same as */
x < --y

也许你把->-->混淆了。->取消对指针的引用,以获取它所引用类型的成员。

1
2
3
4
5
6
7
8
9
10
11
12
typedef struct
{
    int x;
} foo;

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

<-根本不是一个操作员。


如我所见,这只是一个"小于"<运算符,然后减小变量x(--)。不是一个操作员,而是两个操作员。并且--优先于<.


这不是一个运算符,而是两个运算符:<--。代码与

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