P4的左值问题。


如果调用函数如下
extern void f(inout bit x, in bit y);
extern bit g(inout bit z);
bit a;
f(a, g(a));
实际上调用的方式是这样的
bit tmp1 = a;
bit tmp2 = g(a);
f(tmp1, tmp2);
a = tmp1;
还是这样的
bit tmp1 = a;
bit tmp2 = g(a);
f(tmp1, tmp2);
a = tmp1;
a = tmp2;
最终的a值会不会被g(a)所修改,我觉得g(a)里面的a就相当于一个全局变量。会被修改。加粗文字
已邀请:

Wasdns

赞同来自:


很有意思的问题,我觉得应该是第一种:函数f的调用语句先获取a的值作为第一个参数;然后将a传入g,g修改了a的值,将修改后的值作为第二个参数;最后执行f,f修改a并更新a的值。

要回复问题请先登录注册