【发布时间】:2017-01-29 21:01:35
【问题描述】:
假设我有一种类似算法的语言,具有静态类型和以下代码:
a := b + c * d;
其中a 是浮点数,b 整数,c 双精度和d 长整数。然后,该语言会将d 转换为long 以使用c 进行操作,并将b 转换为double 以使用c*d 结果进行操作。因此,在那之后,b+c*d 的 double 结果将被转换为 float 以将结果分配给a。但是,当它发生时?我的意思是,所有转换都发生在运行时还是编译时?
如果我有:
int x; //READ FROM USER KEYBOARD.
if (x > 5) {
a:= b + c * d;
}
else {
a := b + c;
}
上面的代码有条件。如果编译器在编译时转换它,某些部分可能永远不会运行。这是正确的吗?
【问题讨论】:
标签: programming-languages language-theory algol algol68