2014-04-07 75 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( - )。它不是一個運營商,而是兩個運營商。並且 - 優先於<。

相關問題