こんな表情をしています
(*p % 3 != 0) ? *p = (*p) + 1 : *p = (*p) + 2;
Turbo C++ では、*p が 11 の場合は 14 に評価され、*p が 33 の場合は 35 に評価されます。
GCC (Windows) では、それぞれ 12 と 35 に評価されます。
次の形式に括弧で囲むと、正常に機能します。
(*p % 3 != 0) ? (*p = (*p) + 1) : (*p = (*p) + 2);
この違いの説明はありますか?コンパイラが使用する優先順位の違いに帰着すると思いますが、根本的な原因を特定することはできません