我正在用 SystemVerilog 编写代码,并尝试使用三元运算符在两个函数调用之间做出选择。这是我的代码:
module tb;
int a = 1, b = 4;
initial begin
b > a ? $display("%0d", b) : $display("Value: %0d", a); // Syntax error
$display("%0d", b > a ? b : a); // This works correctly
end
endmodule
在行中b > a ? print(b) : print(a);
,我收到语法错误,但该行print(b > a ? b : a);
运行正常。我不明白为什么在函数调用中直接使用三元运算符会导致语法错误。
有人能解释为什么会发生这种情况以及如何解决它吗?
函数调用不是语法错误的原因。问题在于
?:
构造只是一个运算符;它本身并不是一个完整的语句。例如,使用以下代码仍会出现语法错误:该行中没有函数调用。使用任何运算符都会得到相同的语法错误,例如:
要根据条件调用函数,您应该使用
if/else
程序代码: