微信号:gh_5f9337df4e69

介绍:讨论和学习C/C++的编程知识

第七讲 数据类型&&C/C++关键字

2014-01-16 21:42 零灵柒

        开始正事之前说两句题外话,我们这个课虽然叫C/C++,但是我现在给大家说的都是C的基础知识,当然同时也是C++的基础知识,不过大家最好把他当成C来理解,把C部分说完后会给大家讲C++,就好比现在将OI我并没有把cout和cin给拿进来,因为我怕把大家说懵了,分不清哪个是C那个是C++。可能有人听我这么一说会纳闷,为什么不说清楚些呢?不特意标明这是C不是C++呢?我想说的是,不管是C还是C++用来写C++的程序是完全没问题的,如果可以,在以后我们编写C++程序的时候我希望大家能够把C++程序写成C风格的,好了废话撤远了,回到正题上来。

 

============================

        昨天让大家验证一下putchar()和printf()的效率,不知道各位有没有去验证然后把我前天的结论给推翻,其实这两个函数真没啥好比的,C语言是一门面向过程的语言,讲究的效率,但这两个函数都能够满足,当输出10万个字符时,printf()的效率高于pufchar(),但当输出100万个时候,putchar()明显有胜了一族,所以,用哪一个作为标准输出函数,就看大家的选择了。今天我们来说说C/C++的关键字和数据类型,下面我们来看看这个程序:

------------------------------

#include <stdio.h>

#include <stdlib.h>

int main()

{

      int a,b,c;

      printf("请输入a和b的值:\n");

      scanf("%d,%d",&a,&b);

      c = a + b;

      printf("c = %d\n",c);

      system("PAUSE");

      return 0;

}

------------------------------------

        这个程序主要是键入两个数,然输出這两个数的和,现在我们来看看运行结果:

         看来毫无问题,我们再来输入两个带小数的看看:

         为什么会是这样呢?c似乎就没抓到值一样,我们不妨来设个断点,抓取a和b的值看看有什么异常先,断点我们设在 c = a + b;这里。

         看来只读取了a小数点前面的部分,b完全没有被我们键入的值初始化,这是为什么呢?这就是我们要说的数据类型了。因为我们在一开始声明变量的时候就把他们声明为整形,而我们却键入一个浮点型的数据,所以编译器凌乱了。为了实现能够小数相加,我们只需稍微的修改了上面程序的关键字即可,把int换成float,同时将类型转换换成%f即可。现在我们来看看是不是这样:

 

         现在是不是正常了?这说明了一点,关键字很重要,下面我们来说说C/C++里面常用的几个关键字。

         C/C++的数据类型关键字我们简单的说下下面这几个:

------------------------------------------

int, short, long,unsigned, char,float, double, bool

-------------------------------------------

        其中int,short,long,char可以归纳为整形,整形顾名思义,就是整数类型。所以,一旦你声明一个变量为整形后,他就只会读取你的整数部分。所以如果你想要连小数部分读取,就得声明为了float或者double。

       为什么表示整形有这么多表示方法呢?其实在C/C++有这么个定义,short不会比int长,同样long不会比int短,所以可以根据自己的需求声明不同的类型来节约资源。

       float,double,double float为带小数点的类型,他所声明的大概就相当于数学里面大家所理解的实数。

       char,大家可以有些疑惑,明明是个字符型为什么上面把他归纳为整形呢?简单点说,其实每个字符或者标点符号都是被转换为整形来储存在0到127之间的,就好比65表示大写字母A,所以通常意义下是可以用char来表示-128到127之间的整数的。

      bool,布尔,通常意义下表示真假,但是很多时候他却和整形挂钩,为什么呢?我想大家都清楚布尔值,那就是0为假1为真,所以有时候在程序里面会看到没有true和false,只有1和0,也就是这个道理,关于C/C++的类型和关键字,可以说是要说他没啥讲的他讲的也很多,要说他有啥讲的又感觉没啥讲的,所以今天就到这里,大家把这几个记下来基本能够应付一些程序了,至于其他今天没提到的,以后在程序里面会给大家解释,那时候大家也就记住了。

       

       在讲for循环之前,给大家留个题,大家自己尝试一下怎么实现:

       一个小球从100高空自由落下,每次落地弹起的高度是原来高度的一半,求小球第十次落地时共经历了多远?同时计算出第十次的反弹高度是多少?

 

==========================

回复D直接查看目录 ,因为我比较不是专业授业的哪种人,多字少字错别字如果不影响理解还望大家海涵,对于知识点如果有不对的地方,还希望大家能够指出,谢谢。    

 
C/C++的编程教室 更多文章 写在开篇 第一讲 Hello World 第二讲 printf()(1) 第三讲 printf()(2) 第四讲 scanf()
猜您喜欢 欺诈预测机器学习模型设计:准确率和召回率的故事 Java枚举常见7种用法 互联网思维颠覆传统行业的9种方式 Exin的DevOps Master 白皮书您读了么? Netflix使用的异常服务器侦测技术