符号を反転する処理

例えば"int x = 10"であったとき"x = -10"を得たいという場合、どのように記述するか。
今まであまり考えることなく次のように書いていました。

x = -1 * x;

このやり方をどこで覚えたのかはわかりません。
ただ、最近ふと「かけ算使うのってどうよ?」と気になってもっとシンプルな書き方を考えてみました。
少し考えた後、

x = -x;

と書けばいいことに気がつきました。今まで何で思いつかなかったんだろう…。

ちなみに、gcc(x86環境)でアセンブラコードを見てみましたが、"-1 * x"は"0 - x"として処理されていました*1。一方、"x = -x"はnegl命令で処理されていました。

おまけ

ある種の人にとっては符号の反転とは次のような処理らしいです。

x = ~x + 1;

*1:subl命令が使われていた