2016-05-17 8 views
-3

lvalueは、値を割り当てることができる式として定義されています。 配列の値を代入して配列するのは不正です。例:左辺:配列と構造

int x[2],y[2]; 
x = y; 

構造はlvalueと扱うことができます。以下の構造割当は有効です。

typedef struct car { 
    char color[20]; 
    int price; 
} CAR; 

CAR audi, bmw; 
audi = bmw; 

どういう違いがありますか?

+1

違いは何ですか?あなたはすでにそれを述べました。 –

+0

もしあなたがそうしたいのであれば、問題はLHSほどではありません。それは確かに私たちが気にしている価値であるかもしれませんが、RHSです。代入のオペランドは左辺値の変換を行う必要がありますが、これは配列では使用できません。 –

+0

この質問は、**なぜあなたが構造体に配列を割り当てることができるのかを尋ねるならば解消することができます。私はこれに答えようとしました。 – SergeyA

答えて

3

アレイがそれ自体では割り当てられないが、struct内に割り当てられるという歴史的な理由があります。この矛盾の技術的理由は本当にありません。

逸話heresayは、Cが設計されたとき、それは配列assingmentを持っていなかった特定の言語に基づいていました(どちらが覚えていないのですか?)ので、この機能もCから排除されました。しかし、この言語にはstructがありませんでしたので、structの配列アサインメントはOKです。