当前位置:C++技术网 > 资讯 > C语言基础教程:3 数据类型的那些故事

C语言基础教程:3 数据类型的那些故事

更新时间:2015-07-13 00:30:31浏览次数:1+次

   “妖怪哪里跑,吃俺老孙一棒!”,悟空大吼道。“你这泼猴又伤及无辜,你走吧”,光头师傅又一次犯二了。究其原因——悟空认为“妖”属妖道即其定语是妖道;光头认为“妖”属人道即其定语是人。那么问题来了,暂且不管孰对孰错,同一种真实存在的“数据(妖)”为何有不同的“类型修饰语”?再问,“类型修饰语”又有何用?三问,“不同的类型修饰语”又有何用?

    第一讲 “万物归本之标识符之引”稍有提及,咱这讲再深入些、全面些说说数据类型为何物?

    C语言为何要引进数据类型?当让为的是处理具体不同类型的事务。注意看数据类型是由不同类型的事务所产生,这便回答了第一个问题。通俗点说就是“出于不同的目的、引用不同过的方法解决问题”。“抽象、太抽象了”,你怨声载道。抱歉,我当然不是死板的人却做了死板的事说了死板的话?。我给大家画一幅图吧,以此弥补我的错。


这个图 一并回答了问题二和问题三,聪明的你应该看出点眉目了吧。下面我们就围绕这个图展开讲。很有意思的,不信你就玩下看。

    C语言中常用的类型有两类:整型(int ) 和 浮点型(double) 。后来考虑到节约内存又引申出了 char 和 float ,后来有根据实际问题定义出了signed 、unsigned、 long等等这些都大同小异,只要明白了最本质的东西,万物通理。所以啊,学东西不在于学的多而在于明白最本质的东西。

☆     数据类型有两个作用:指定解析方式 + 指定解析内存块大小

这是唯一一个需要理解加记忆的地方

理论到此为止,下面实践。这便是掌握必要的理论然后大胆实践吧!

今天就玩这个程序,有些知识点大家没学到,为了不影响这讲的主要内容,我知稍微提下,以后会有详解的,放心。

 

int main()

{/*下面这个程序中的诸多问题都不用考虑,我会讲的,今天主要讲数据类型,那就开足马力直奔主题好啦*/

       int temp = 256 ;//定义一个变量

       float ft = 256;

       printf("temp的地址%p\t\t\t  ft的地址%p\n",&temp,&ft);/调用库函数

       printf("temp = %d\t\t\t\t  ft = %f\n",temp,ft);

       printf("以float去解析temp = %f\t\t  以int去解析ft = %d\n",temp,ft);

       return 0;

}

运行的结果如下:

有疑惑了吧  ,我们一探究竟。直接去temp和ft的内存地址看看,里面究竟存的啥玩意。

先别忙着晕,这里面有大小端问题,还有十六进制数问题。先抛开这些,我给你调整一下便是 temp = 00000100h

ft = 43800000h这里的h表示hex,十六进制的意思。关于进制问题,后面有专题讲,这里就先麻烦大家辛苦下去百度下呗。换成二进制就是 temp = 100000000

ft = 1000011100000000000000000000000  哈哈 就是这些个玩意  罢了。

tempint型的那么按照int(%d)型去解析0x0018ff44里的数据,那么结果就是对的,而按照float(%f)型去解析0x0018ff44里的数据就不对了嘛,就像悟空和光头用不同的眼光去看待妖一样啦。这边涉及的只是解析方式不一样,解析内存大小还是一样的,对于其他情况还可能存在解析的内存块大小都不一样呢,那些就比较复杂了涉及到内存切割,我后边会讲的。今天仅仅只是一个入门哦,后面会详细讲解里面的每一个知识点。

 

☆     总结:数据类型有两个作用:指定解析方式 + 指定解析内存块大小

 

 

附:之前两讲 更名为:第一讲 万物归本之标识符之引

                     第二讲 C语言编程尝试