記事 ID: 000073768 コンテンツタイプ: トラブルシューティング 最終改訂日: 2021/08/28

悪影響を及ぼす論理演算または条件演算の結果が正しくない

環境

    インテル® Quartus® II サブスクリプション・エディション
BUILT IN - ARTICLE INTRO SECOND COMPONENT

クリティカルな問題

詳細

C2H コンパイラーは、常に両方の論理関数を評価します。 ( &&|| ) および条件 ( ?: ) 演算子。これは予想される米国標準規格とは異なります。 インスティトゥート (ANSI) C の動作は、云云を左から右に評価する場合、 そして不要な囃子を卉卉

例えば、式では (i-- && j--) 、 値が 0 の場合 i 、ANSI C は評価しません。 右側 (RHS) の式で、 j 次の式ではありません。 デクリメント。対照的に、C2H コンパイラーは両側を評価します。 decノト j .

次の式はその他の例です。 この問題の影響を受ける:

if (i-- || j ) ...; a = ((cond == 1)? i : j );
解決方法

演算子が持つ論理演算と条件演算を使用する 何の有害作用もありません。悪影響を及ぼす操作には、前処理および後処理が含まれます。 刻みおよび減分演算 ( -- ) メモリー操作 ( * , [] , ., -> ) および機能呼び出し。

関連製品

本記事の適用対象: 1 製品

インテル® プログラマブル・デバイス

1

このページのコンテンツは、元の英語のコンテンツを人力翻訳および機械翻訳したものが混在しています。このコンテンツはお客様の便宜と一般的な情報のみを目的として提供されており、情報の正確さと完全性を保証するものではありません。このページの英語版と翻訳の間に矛盾がある場合は、英語版に準拠します。 このページの英語版をご覧ください。