1

给定以下 C 赋值语句:

c = d * 120;

什么是绑定时间:

一个。变量c的类型?

湾。写变量的约定规则?

C。变量c的地址?

d。运算符*的含义?

e. operator * 的两个操作数的加载顺序是什么?

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

我对以上问题的回答:

一个。编译时间

湾。语言设计时间

C。加载时间

d。编译时间

e. 语言设计时间

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

4

1 回答 1

4

A. 编译时间。

B. 什么是“写变量的约定规则”?在这种情况下,“约定”是什么意思?

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

D. 编译时间或语言设计时间,取决于这里“运算符的含义”的真正含义。算术运算符的数学含义由语言设计决定。重载运算符的特定版本(例如int * intvs double * double)在编译时选择。

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

于 2012-10-23T17:45:51.573 回答