2014-04-07 72 views
-12

我正在通过K & R C书,并在优先表中通过此-->运算符。所以,我想知道是否有类似的操作,即<--写下了下面的程序:为什么没有“< - ”运算符?

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

它的工作完全正常。那么为什么不是< - 不被视为运营商? (因为它不在优先表!),它的优先级是什么?

+0

你在哪找到那张表?让我们知道这一点。 – haccks

+0

对不起,以为是' - >'但它是' - >':3 –

回答

6

-->不是一个算子,它是两个; (后)递减并小于。 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; 
} 

<-根本就不是运营商。

+0

是的,谢谢 –

2

这不是运营商,而是两个运营商:<--。该代码是相同的

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

如果它不是aoperator,为什么它被列在K&R的C precedence表中? –

+3

@PruthviRaj:不是。你的意思是' - >'是否指向一个指针? –

+0

糟糕!我不好,我认为这是' - >':3 –

1

正如我看到它,这仅仅是一个“小于” <操作者依次递减变量x( - )。它不是一个运营商,而是两个运营商。并且 - 优先于<。

相关问题