语句对内存产生的实际操作是什么?真心求吧主等大神解答
c语言吧
全部回复
仅看楼主
level 1
二船长 楼主
我学C语言半年了,对于常用的循环,数组,指针都有所了解,也能写出一些最初级的程序。
但是还想了解一些更深点的东西。
比如说int a;
a=1;
那么我们都知道这是定义一个变量a,然后给a赋值1
但是我想了解这条语句在内存中产生的实际操作是什么?
int a的作用是否只是在内存中开辟出一块4字节大小的空间,空间开辟完之后其实这块空间和int就没有关系了;
a=1是否是编译器自动判断1为整型(因为1后面没带小数点),然后化为二进制0001,然后装入之前开辟出的a变量的空间中。
还有printf("%d",8.3);这条语句我的计算结果是-1717986919,但是实际运行的结果却是-1717986918?
这些东西其实对于我现在没有用,但是真的忍不住想要去了解,若是我想学习这方面的知识,应该看什么书,口碑极好C primer plus和c programming language中似乎都很少涉猎这方面
真的诚心求解,身边很少有人能解答,感激不尽
2018年02月24日 09点02分 1
level 10
反汇编
2018年02月24日 10点02分 2
你好,能否说的详细点[勉强]
2018年02月24日 10点02分
level 14
csapp
2018年02月24日 10点02分 4
谢谢
2018年02月24日 10点02分
@二船长 看这本之前最好了解一下组成原理
2018年02月24日 10点02分
level 9
《程序员的自我修养——编译、链接和装载》
2018年02月24日 11点02分 6
你可以先记着,等以后在看
2018年02月24日 11点02分
@梦中不知梦已醒 好的,谢谢前辈[真棒]
2018年02月24日 12点02分
level 1
二船长 楼主
别沉啊[勉强]
2018年02月24日 12点02分 8
level 15
为何不学学操作系统原理,计算机原理[滑稽]
2018年02月24日 13点02分 9
准备看计算机组成与设计,还有csapp,可都厚的很哪[滑稽]
2018年02月24日 14点02分
@二船长 先看计算机组成与设计吧,我们的课本,这门课真让我觉得学到了东西。
2018年02月25日 11点02分
level 5
不是所有语句都内存操作行为,你可以看下返汇编,很多代码是没有对应任何指令的,最常见的就是变量声明,这些语句很多不对应任何代码,有初值局部变量会对应赋值相关代码,还有就是局部变量的声明会影响栈指针移动的距离,别的没有了。。。
printf是一个格式化函数,是人为写的代码,你也可以重写printf,和编译器没有任何关系。。。
2018年02月25日 00点02分 12
level 5
学C语言就无视这些东西最好,因为这些都牵扯到C语言的编译规则,C语言还没学好,基本是理解不了这种东西的,这种东西也能百度到,基本是不可能看懂的,你可以买本编译原理的书,但我还是劝你算了。。。
2018年02月25日 00点02分 13
首先你要精通C语言和汇编,以及计算机原理(计算机芯片的基本运行原理,而且计算机芯片种类可不止x86一种模型),然后再来讨论你想问的问题。。。
2018年02月25日 00点02分
谢谢
2018年02月25日 09点02分
这么说不好吧,不会C确实不好学编译原理,但是组成原理和汇编还是好学的。
2018年02月25日 11点02分
level 11
我的帖子正在说这些东西,有兴趣可以来看看,硬编码,汇编,c,cpp揉在一起互相对照着学
2018年02月25日 01点02分 14
[真棒]
2018年02月25日 15点02分
level 9
int a=1;
就是一段四字节空间,里面存放了
01 00 00 00
这四个字节的数据。
描述它是int的任务不是这四个字节的,而是编译阶段的编译器的。编译完之后程序的其他地方用这段内存时就把它当整型用,整个程序里也没有什么地方写着这是int。
2018年02月25日 04点02分 15
assuming little endian; assuming debug;
2018年02月25日 04点02分
谢谢
2018年02月25日 09点02分
level 12
去学汇编吧 [滑稽]
2018年02月25日 06点02分 16
[滑稽]
2018年02月25日 09点02分
level 11
楼主去学一学计算机组成原理或者体系结构吧
2018年02月25日 11点02分 17
1