78

演算子を使用して、ポイントされている整数をインクリメントしたいintポインター(つまり、 )があります。私は私が呼ぶと思った:int *count++

*count++;

ただし、ビルド警告「式の結果は使用されていません」が表示されます。私ができること:電話

*count += 1;

++でも、演算子の使い方も知りたいです。何か案は?

4

2 に答える 2

104

++は*と同等の優先順位を持ち、結合性は右から左です。こちらをご覧ください。++はポインタに関連付けられますが、ステートメントの評価後にインクリメントが適用されるため、さらに複雑になります。

発生する順序は次のとおりです。

  1. ポストインクリメント、ポストインクリメントされたポインタアドレス値を一時的なものとして覚えておいてください
  2. インクリメントされていないポインタアドレスを間接参照します
  3. インクリメントされたポインタアドレスをカウントに適用します。カウントは、そのタイプのエンティティの次に可能なメモリアドレスを指すようになりました。

手順2で逆参照された値を実際に使用することはないため、警告が表示されます。@ Sidarthが言うように、評価の順序を強制するには括弧が必要です。

 (*ptr)++
于 2010-09-07T04:23:45.743 に答える
19

を使用してみてください(*count)++*count++ポインタを次の位置にインクリメントしてから、間接参照を使用している可能性があります(これは意図的ではありません)。

于 2010-09-07T04:19:42.480 に答える