問題タブ [lvalue]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - ポインターのインクリメントと逆参照 (左辺値が必要なエラー)
ポインターのインクリメントと逆参照がどのように連携するかを理解しようとしています。これを試してみました。
私は、このコードが次のいずれかを実行することを期待していました。
- 最初に逆参照してからポインターを増やします (word1 を出力します)
- 最初に逆参照してから値を増やします (ord1 を出力)
- 逆参照ポインタ + 1 (word2 の出力)
しかし、コンパイラはこれをコンパイルすることさえせず、このエラーを出します:lvalue required as increment operand
ここで何か間違ったことをしていますか?
c++ - 代入の左オペランドとして左辺値が必要 C++ コンパイル エラー
マインスイーパ ゲームをビルドしようとしていますが、コンパイル エラーが発生し続けます: 代入の左オペランドとして左辺値が必要です。次の 2 行のみ:
鉱山がすべての新しいゲームをランダム化するように、セルを交換しようとしています。私は周りを検索しましたが、これに対する解決策を見つけることができませんでした。「==」を追加しましたが、その関数は私が望んでいることをしません。
++編集++ 申し訳ありませんが、左辺値が必要と記載されていました。入力し忘れました
それが発生するエラーです。
c++ - C++ エラー C2102: '&' には左辺値が必要です
多くのメニューとサブメニューを備えたコンソール アプリケーションを c++ で作成しています。メニューを表示する方法は、do-while ループです。3 つのパラメーターを使用してメニュー ループを表示する関数を作成しました。1 つ目はメニュー内のオプションの数に関連する整数、2 つ目はメニューを表示する関数、3 つ目はユーザーが入力した選択を実行する別の関数です。 .
表示されるエラーは「エラー C2102: '&' には左辺値が必要です」です。私はプログラミングに少し慣れていませんが、関数をパラメーターとして渡すのはこれが初めてです。コメントアウトしたコードを削除するために、この関数を作成しています。誰でも私が間違っている場所と可能な解決策を指摘できますか? そうでない場合は、各メニューに重複したコードを使用するだけです。これは、プログラミングの習慣が悪いとわかっています。
c - キャスト エラー: 代入の左オペランドとして左辺値が必要です
だから私はを使用しようとしてether_aton()
いますstruct ether_addr *
。これを、メンバーを持つ (net/ethernet.h から)
に入れようとしています。私はこれを試しました:struct ether_header *eptr
ether_shost
これは私に"Error: lvalue required as left operand of assignment"
正しくキャストしていないことはわかっていますが、その方法がわかりません。
編集:それを取得しました。助けてくれてありがとう。
各オクテットを個別に割り当てる必要がありました。
c - C 右辺値と左辺値を識別する方法は?
C では、rvalues と lvalues を識別する方法はありますか?
それらのいくつかは簡単に識別できます。たとえば、割り当てでは、左側の値が左辺値で、右側の値が右辺値です。
しかし、他のシナリオでは、そのようなルールによる識別は困難です。
例: *p++
and i++
(p は整数へのポインターで、i は整数) - 右辺値か左辺値かを識別する方法は? コンテキストは++*p++
機能しますが、右辺値である++i++
ため機能しません(真面目な人が言ったように)。i++
式で右辺値と左辺値を識別する方法は?
c - (void *) を汎用データ コンテナーとして使用する場合の L 値の問題
プログラムで使用される構造は次のとおりです。
今:
basic_block
プログラムの実行中に のインスタンスがいくつか存在します。- プログラムはステージ/パスで動作し、次々に実行されます。
- この
aux
フィールドはbasic_block
、ステージの実行中にステージと特定のデータを格納するためのものであり、ステージ自体によって解放されます (次のステージで再利用できるようになります)。これがvoid *
.
私のステージはaux
を格納するstruct
ために使用されるため、何かにアクセスするたびに、キャストを行う必要があります。
さて、私の問題です。このように毎回キャストするのは苦痛であり、より複雑な式の一部であると読みにくいです。私が提案した解決策は次のとおりです。マクロを使用してキャストを行います。
次に、次の方法でデータにアクセスできます。
しかし:私はMY_DATA(bb)
自分自身を( a の)L値として使用することはできないmalloc
ので、結局、そのマクロを使用することはあまり良い考えではありません:
私の質問:
aux
クリーンな方法で参照し、それを L 値として使用できるようにするにはどうすればよいですか。
c++ - MSVC ++は、右辺値ではなく左辺値に基本演算子=オーバーロードを使用しますか?
コンパイラのスプラッシュ画面は次のとおりです (バージョンなど)。
私は基本クラス(テンプレートです)を持っています。それは次のとおりです。
私は、決して再実装しない派生クラスを持っていoperator =
ます。
私が次のことをした場合:
operator =
左辺値を受け入れる は 2 行目で呼び出されます。
の定義に入りDerived<T>
、次を追加すると:
operator =
右辺値を受け入れる が呼び出されます。
operator =
左辺値を取る を (ほぼ同じ方法で)実装しても、この動作は持続します。
より良い言い回しがない場合: 何を与えるか?
私は C++ を誤解していますか、それとも本来の動作方法ではないのでしょうか?
c++ - const 参照による引数の受け渡しではなく、いつコピー省略を選択する必要がありますか?
重複の可能性:
値渡しは C++11 の妥当なデフォルトですか?
私はスピードが欲しいを読んでいますか?値渡し。コピー省略と RVO についての Dave Abrahams による。そして、なぜコピー省略が必要なのだろうか?
コピーを避けるために、関数の引数を const 参照で渡す必要があると何度も言われました (私が読んだほぼすべての C++ 本で、これについて教えてもらいました)。
2 つの関数があるとします。
実引数が右辺値の場合、両方の関数でコピーが回避されます。しかし、実際の引数が左辺値の場合、コピーは f2 ではなく f1 でのみ回避されます。では、なぜこの機能が必要なのでしょうか?
c - L値は必要ですか? C プログラミングのビット パターン
/*エラー: 関数 InsertA には左辺値が必要です。ここで
*/
python - perl の lvalue や Python の Lisp の setf のようなものは可能ですか?
Lisp では、次のように言うことができます。
perl では次のように言えます。
Pythonでこのようなことは可能ですか?関数の結果を左辺値として (代入演算の対象として) 使用することは可能ですか?