[解決済み] エラー: 代入の l 値が無効です [in c].
2022-02-17 09:33:10
質問
何が問題なのかがわからない。
プログラミングをしていて、ここの問題を解決しようとしたのですが、バグが見当たりません。このプログラムのどこを間違えてコーディングしてしまったのか、みなさんがアドバイスしてくれませんか?それは感謝されます:)
これは、私がプログラムをコンパイルした後に、コンパイヤーが言ったことです。
In function 'main':
Line 40: error: invalid lvalue in assignment
というものである。
/*Calculate area for single room*/
width * length = totalArea_single;
そして、これがコードの全体像です。
#include <stdio.h>
#include <stdlib.h>
/*Main function of this program*/
int main()
{
char input[512];/*buffer*/
char roomInput[512];/*buffer*/
int roomCount =0;/*Store number of room*/
int width =0;/*width integer*/
int length =0;/*length integer*/
int room =0;/*To make sure roomCount have to be more than 0*/
int totalArea_single =0;
int totalArea_all =0;
/*Ask how many room in the house*/
printf("\nHow many rooms in the house?: ");
fgets(input,sizeof(input),stdin);
sscanf(input,"%d",&roomCount);
/*For loop for calculating room area by number of room entered*/
for(room=0;room<roomCount;room++)
{
/*Input for width and have to be more than 0*/
while(width>0)
{
printf("Width in meters for room %d: ",room+1);
fgets(roomInput,sizeof(roomInput),stdin);
sscanf(roomInput,"%d",&width);
}
/*Input for length and have to be more than 0*/
while(length>0)
{
printf("Length in meters for room %d: ",room+1);
fgets(roomInput,sizeof(roomInput),stdin);
sscanf(roomInput,"%d",&length);
}
/*Calculate area for single room*/
width * length = totalArea_single;
/*Store area of all rooms*/
totalArea_all = totalArea_single + totalArea_all;
width = -1;
length = -1;
}
/*Print out total areas of the house*/
printf("\nTotal areas of the house is %d square meters",totalArea_all);
return 0;
}
何がいけなかったのか、よくわかりません...。助けてくれてありがとうございます。)
解決方法を教えてください。
コンパイラのエラーをよく見てみると、次のように書かれています。
error: invalid lvalue in assignment
このエラーを理解するためには、次のことを理解する必要があります。 値 と rvalue . を使用します。 値 は、1つの式を越えて永続するオブジェクトを指します。例えば 値 は、名前を持つオブジェクトです。一方 rvalue は一時的な値で、それを使用する式を越えて永続することはありません。
そこで、この問題を引き起こしているコードラインを見ると
width * length = totalArea_single;
そのため、何らかの値やデータを保存する際には 値 の左側にある = 演算子を使用します。 一方 幅 * 長さ を生成します。 rvalue 簡単に言えば、どんな値でも格納するためにはlvalueが必要だということです。そのため、このステートメントを次のように変更する必要があります。
totalArea_single = width * length;
lvalueとrvalueの詳細については、こちらを参照してください。 SO リンク .
関連
-
[解決済み】Valgrind - strcpyのサイズ1の無効な書き込み
-
[解決済み】ISO C90では、C言語での宣言とコードの混在が禁止されています。
-
[解決済み】 strcpyとstrdupの比較
-
[解決済み] clang: error: linker command failed with exit code 1が表示されるのはなぜですか?
-
[解決済み】警告:引数「互換性のないポインタ型から」を渡す[デフォルトで有効]。
-
[解決済み】エラー:不明な型名'bool'
-
[解決済み】execvp: バッドアドレスエラー
-
[解決済み】Linuxソケットのwrite()でBad File Descriptorが発生するC
-
[解決済み】whileループの時間複雑性(Big O)はどうやったらわかるの?
-
[解決済み] Rが解決できない - Androidエラー
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Valgrind - strcpyのサイズ1の無効な書き込み
-
[解決済み】C言語で「関数の型が競合しています」と表示される、なぜ?
-
[解決済み】エラー:'for'ループの初期宣言はC99モードでしかできない【重複
-
[解決済み】ヒープ割り当てで初期化されていない値が作成された
-
[解決済み】エラー。非スカラー型への変換を要求された
-
[解決済み】C言語でint64_t型を表示する方法
-
[解決済み】インクリメントオペランドとして lvalue が必要です。
-
[解決済み】.axfファイルとは何ですか?
-
[解決済み】配列型char[]が代入できない [重複]。
-
[解決済み】c - 警告:関数 'printf'の暗黙の宣言