文章 ID: 000073768 内容类型: 故障排除 上次审核日期: 2021 年 08 月 28 日

具有附带效果的逻辑或条件操作的错误结果

环境

  • 英特尔® 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 产品

    英特尔® 可编程设备

    本页面上的内容是原始英文内容的人工翻译与计算机翻译的组合。我们提供此内容是为了您的便利并且仅供参考,未必完整或准确。如果本页面的英文版与翻译版之间存在任何冲突,应以英文版为准。 查看此页面的英语版本。