文章 ID: 000073768 內容類型: 疑難排解 最近查看日期: 2011 年 09 月 14 日

有端效果的邏輯或條件操作所產生的錯誤結果

環境

  • Intel® Quartus® II 訂閱版
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT

    重大問題

    描述

    C2H 編譯器會同時評估兩種邏輯操作 ( &&|| ) 與條件 ( ?: ) 運營商。這與預期中的美國國家標準不同 從左至右評估操作程式的 Institute (ANSI) C 行為, 此外,也不再需要進行不必要的操作。

    例如,在表達中 (i-- && j--) , 如果值為 i 零,則 ANSI C 不進行評估 右側 (RHS) 表情, j 並非 除損。相比之下,C2H 編譯器會評估兩面, 除損 j

    下清單達方式可能是其他範例 受此問題影響:

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

    使用其營運商具備的邏輯與條件作業 無側面效果。具有側面效果的作業包括前後 增量與除損作業 ( -- ), 記憶體操作 ( * ,, [] ., -> ), 和功能通話。

    相關產品

    本文章適用於 1 產品

    Intel® 可程式裝置

    這個頁面的內容綜合了英文原始內容的人工翻譯譯文與機器翻譯譯文。本內容是基於一般資訊目的,方便您參考而提供,不應視同完整或準確的內容。如果這個頁面的英文版與譯文之間發生任何牴觸,將受英文版規範及管轄。 查看這個頁面的英文版。