绑定时间和C赋值语句

时间:2012-10-23 16:18:15

标签: c variable-assignment language-design

给出以下C赋值语句:

c = d * 120;

什么是绑定时间:

一个。变量的类型c?

湾编写变量的约定规则?

℃。变量c?

的地址

d。 operator *?

的含义

即加载operator *的两个操作数的顺序?

我知道有6种可能的绑定时间:语言设计时间,语言实现时间,编译时间,加载时间,链接时间,运行时间。

我对上述问题的回答:

一个。编译时间

湾语言设计时间

℃。加载时间

d。编译时间

即语言设计时间

请你检查我的答案是否正确?谢谢:)。

1 个答案:

答案 0 :(得分:4)

一个。编译时间。

B中。什么是“编写变量的常规规则”?在这种情况下,“惯例”是什么意思?

℃。特定答案的信息不足。在现代平台上,变量的“地址”由其在过程的[虚拟]地址空间中的位置确定。对于全局/静态变量,它在编译时或链接时确定(取决于您如何解释问题)以及变量的链接。对于自动变量,绝对地址在运行时确定,而堆栈帧内的相对地址在编译时是已知的。您没有提供有关变量的具体信息(全局?本地?),因此无法回答这个问题。

d。编译时间或语言设计时间,取决于此处“操作符的含义”的真正含义。算术运算符的数学含义由语言设计决定。在编译时选择了重载运算符的特定版本(例如int * int vs double * double)。

电子。这个问题比看上去更模糊。代码中加载指令的顺序将在编译时确定。但是,实际的物理负载可以在运行时由现代处理器重新排列。 “加载顺序”问题的含义是什么:列表中的加载指令的顺序或传输数据的物理运行时行为的顺序?