← eetop.cn_Perl语言入门(第四版小骆驼书)

推荐答案 测试一下

2.3添加空格 :/x................................ ................................ ................................ .........…

问答题 中等 经典问答问答题

参考答案

该题考察 Verilog/SystemVerilog 中字符串的格式化与空格添加,常见于数据对齐或输出控制。题目中“/x”可能为转义序列或路径占位,后续多个连续点表示长度占位,最终数值“99”需在指定位置添加空格以对齐。 关键操作为使用 $sformatf 系统函数,其语法类似 C 的 sprintf,支持格式说明符。例如: - 左对齐填充空格:`$sformatf("%-10d", 99)` 生成 "99 "(右侧 8 空格补足 10 位)。 - 右对齐填充空格:`$sformatf("%10d", 99)` 生成 " 99"(左侧 8 空格)。 - 也可通过字符串连接实现:`str = {" ", "99"};` 但无法动态控制宽度。 - 若需在固定位置插入空格,可用 substr 或索引操作,如 `str.insert(pos, " ");`(SystemVerilog string 方法)。 - 使用 $sformatf 可同时处理多个变量,如 `$sformatf("/x%3d", 99)` 输出 "/x 99"。 常见错误:混淆填充字符(空格 vs 0);误用 %b 或 %h 导致进制错误;未指定宽度导致无填充;忽略 $sformatf 返回类型为 string(需赋值或显示调用 $display 等)。 易错点: 1. 格式说明符中“%d”默认无填充,需显式指定宽度。 2. 左/右对齐符号“-”必须紧跟在“%”后。 3. 字符串字面量中的反斜杠转义(如 "/x" 可能代表路径分隔或字符“/”后跟“x”,需确认语义)。 建议:在 IC 验证中常需将数值转换为固定位宽字符串以比对或日志输出,掌握 $sformatf 及 string 操作方法可提高代码可读性。

涉及知识点

  • SystemVerilog $sformatf 格式化
  • 字符串填充与对齐
  • 字符串连接操作
  • 转义序列识别
  • 位宽控制与数值转换
← 上一题
登录后反馈错题
下一题 →