一个关于类型的有关问题

一个关于类型的问题
在程序中,某个变量的类型信息存在哪里呢?
比如一个int占4个字节,但是这4个字节都用来存储变量本身了,它是个int类型,这个信息存在哪里呢?
再如,对一个int*加1,会偏移4个字节,但是对char*加1会只偏移一个字节,这个又是怎么实现的呢?

------解决方案--------------------
我觉得,编译器是通过你的源代码解释知道是什么类型的,等编译器编译成二进制的exe时候,那些*的加1恐怕早已经改好了成地址位的加4了,所以在运行时候直接按编译好的机器码执行了吧
------解决方案--------------------
类型信息是你定义的,与数据本身没关系。编译程序在编译过程中对每个标识符翻译时,就知道该标识符的类型,不是变量区的数据表示出来的。

------解决方案--------------------
对于目标代码来说没有什么int、char之类的东西,只有一串用来处理它们的机器码。而这些机器码是由编译程序生成的,编译程序根据要处理的数据类型来生成具体需要处理的机器代码,需要+1的就是+1的代码,需要+4的就是+4的代码。所以,目标码里就不再有变量名字、变量类型之类的东西了。
------解决方案--------------------
c进行语法解析 符号表内会有符号及对应的变量类型
对于汇编码来说 重要的是类型对应的长度信息

对int赋值 int a=3;

mov dword ptr[ebp-08h],3

即将立即数3 传输到了地址为ebp-08h的内存单元 而dword ptr则代表了引用了以这地址为起始的4字节 

类型不类型是无所谓的 在汇编层面上 只有它引用的内存长度

c里面的指针 也就是能寻址后再寻址