这么多年了,我一直记得大学时C语言老师的一个问题

Timor君 发布于 2012/09/22 18:58
阅读 842
收藏 0

期末考试,有上级部分考试,如果不过,也就意味着挂科。

当时轮流问答,到我的时候,就问我一个问题。

int i = 3

这行代码你是怎么理解的?

当时我傻了,本来排序那些都背下来了,结果问了这个,完全没有头绪

就乱说了一些。

老师的评语是:基础懂了一些,但是不深入。

最后还是没挂。

没事的时候我一直想这个问题,他到底想让我怎么回答。

加载中
0
中山野鬼
中山野鬼
哈。你老师也够无里头的,要看int i = 3放哪了。。。。。
0
xesam
xesam
他只是单纯的不想让你挂...而已
0
周翼翼
周翼翼

引用来自“中山野鬼”的答案

哈。你老师也够无里头的,要看int i = 3放哪了。。。。。

放在哪都无外乎存储器读写.

求第三个动作.

0
魔方帅帅
魔方帅帅

引用来自“周翼翼”的答案

引用来自“中山野鬼”的答案

哈。你老师也够无里头的,要看int i = 3放哪了。。。。。

放在哪都无外乎存储器读写.

求第三个动作.

还有可能,这句话直接被编译器和谐掉。哈哈
0
0
泡不烂的凉粉
泡不烂的凉粉
声明变量,赐予初始值.
0
cut
cut

老师想问你现在社会都那么和谐,你写这段代码有没有被和谐了。

0
中山野鬼
中山野鬼

@周翼翼 ,第三个动作? @魔方帅帅 哥 已经说了。

3直接被使用,如果i是局部变量且没有被修改过。此时3会内嵌到机器码里面。如果是加法则是对一个寄存器 加上一个 常量 。 通常5,到6位范围的常量是可以写到指令里的。

0
leo108
leo108
你告诉老师,这行代码漏分号了
氵共
int i=3;
0
周翼翼
周翼翼

引用来自“中山野鬼”的答案

@周翼翼 ,第三个动作? @魔方帅帅 哥 已经说了。

3直接被使用,如果i是局部变量且没有被修改过。此时3会内嵌到机器码里面。如果是加法则是对一个寄存器 加上一个 常量 。 通常5,到6位范围的常量是可以写到指令里的。

所谓被编译器和谐掉,那是生成机器码时候的事, 和我们写下int i = 3的时候的意思是没关系的. 我们说东他向西也没办法~~

至于你说的3直接嵌到机器码里, 也是编译优化做的事.

说来说去, 还是只有两件事~~

返回顶部
顶部