2
#include <stdio>
int main(){      

       int x = 4;  
       int y = 3;  
       int z;

       z = x---y;
       printf("%d" , z);
       return 0;
}

Linux Mandriva の gcc コンパイラは、それを として評価し(x--)-yます。なぜそうなのか、私は混乱しています。だったかもしれませんx - (--y)

I know some of the answers would tell me to look at precedence tables. Ihave gone through all of them, still the doubt persists.

Please anybody clarify this.

4

3 に答える 3

9

C レキシカル トークナイザーは貪欲なので、式は次のようにトークン化されます。

x -- - y

優先ルールが適用される前。

于 2011-07-14T09:09:43.197 に答える
4

ルールは、「次のトークンを取得するときに、有効なトークンを構成する可能な限り長い文字列を使用する」です。Soの後に a-----続き、-その逆ではありません。優先順位は実際にはこれとは何の関係もありません。

于 2011-07-14T09:11:27.317 に答える
-1

x--よりも強いので--x、このようにコンパイルされます。Postfix は prefix よりも強力です。

C 演算子の優先順位表を参照してください。

于 2011-07-14T09:11:45.413 に答える