我正在阅读K& R C书,并在优先级表中通过了这个-->
运算符。所以,我想知道是否有一个类似的运算符,即<--
,并编写了以下程序:
#include<stdio.h>
void main()
{
int x = 5;
while(0 <-- x)
printf("%d",x);
}
它工作得非常好。那么为什么不是&#t; t&lt; - 不被视为运营商? (因为它不在优先表中!)它的优先级是什么?
答案 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;。