1. ホーム
  2. c

[解決済み] C言語では*--表記はどうなっているのですか?[クローズド]

2022-03-01 12:54:57

質問

コンパイラを使ったライブラリで遭遇しました。

register char *bufptr;
register int   neg = val < 0;
register long  uval = val;

*(bufptr = &tempc[BUFLEN - 1]) = 0;

do {*--bufptr = abs(uval % 10) + '0';}  while(uval /= 10);

実際に "*--" は何をするのですか?検索してみたのですが、C言語のリファレンスには含まれていませんし、検索エンジンはあまり"*--"を好まないようです。

どのように解決するのですか?

*--bufptr は、以下のものと同等です。 *(--bufptr) をデクリメントする。 bufptr まず、その値を取得します。

を調べると C 言語の演算子の優先順位表 インクリメントとデクリメント演算子の方が、デリファレンス演算子よりも優先順位が高いことがわかると思います。