返回介绍

7.19 条件操作符

发布于 2020-09-09 22:55:47 字数 1070 浏览 1196 评论 0 收藏 0

conditional_expression ::=        // 引用自附录A.8.3
    cond_predicate ? {attribute_instance} expression : expression

cond_predicate ::=                // 引用自附录A.6.6
    expression_or_cond_pattern {&& expression_or_cond_pattern}

expression_or_cond_pattern ::=
    expression | cond_pattern

cond_pattern ::= expression matches pattern

语法 7-6 — 条件操作符语法(摘录自附录A)

本节描述了传统的条件操作符,其中cond_predicate仅仅是单个表达式。SystemVerilog还允许cond_predicate执行模式匹配,这种方式将在8.4节中描述。

正像Verilog所定义的那样,如果cond_predicate为真,那么操作符返回第一个表达式;如果结果为假,那么返回第二个表达式。如果cond_predicate被计算成一个不明确的值(x或z),那么无论是第一个表达式还是第二个表达式都应该被计算,并且它们的计算结果应该一位一位地组合起来。

SystemVerilog通过下列规则将条件操作符扩展到非integral类型以及结合表达式:

  • 如果第一个表达式和第二个表达式都是integral类型,那么操作按上述方式进行。
  • 如果第一个表达式或第二个表达式是intergral类型,并且另外一个可以被隐式地强制转换到integral类型,那么会进行强制类型转换并按上述的方式进行操作。
  • 对于所有其它情况,第一个表达式和第二个表达式的类型必须是等价的。

cond_predicate被计算成一个不明确的值,那么无论是第一个表达式还是第二个表达式都应该被计算,并且它们的结果应该一个元素一个元素地组合起来。如果元素是匹配的,那么返回元素。如果不匹配,那么应该返回元素类型的缺省的未初始化的值。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文