1. ホーム
  2. c

[解決済み] なぜa+++++bは機能しないのか?

2023-03-13 12:39:58

質問

int main ()
{
   int a = 5,b = 2;
   printf("%d",a+++++b);
   return 0;
}

このコードでは、以下のようなエラーが発生します。

error: increment operand として lvalue が必要です。

しかし、もし私がスペースを全体的に a++ +++b であれば、問題なく動作します。

int main ()
{
   int a = 5,b = 2;
   printf("%d",a++ + ++b);
   return 0;
}

最初の例のエラーは何を意味するのでしょうか?

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

printf("%d",a+++++b); は次のように解釈されます。 (a++)++ + b 最大ムンク則によれば ! .

++ (postfix) は lvalue に評価されませんが、オペランドが lvalue .

! 6.4/4の発言 次の前処理トークンは、前処理トークンを構成しうる最も長い文字のシーケンスである。