关于C++中数据基础数据类型的一个杂记

任何一个变成语言,都会有build-in type(内置数据类型),C++是从C语言发展过来的,从而对硬件的支撑还是比较好的。先说一点工作中的经验(copy来的,先记着)。

1、经验之谈

  1. 我们经常使用整形进行计数,使用unsigned 类型比较明智(在比较过程中,有符号的负数大于无符号数据类型);
  2. 在执行整形算数运算时,比较少使用short类型,否则可能会造成越界的错误;
  3. 对于char类型,我们常用来存储字符;
  4. 大多数机器上,使用int类型进行整形计算不易出错,并且比long预算代价更低;
  5. 对于浮点数类型呢,主要使用double类型,有10个有效值(float只有6个有效值);
  6. 变量一般都要进行初始化,这个可是bug的一个主要来源;

2、对象的初始化

我们知道对象的初始化有好几种方式,如直接和复制初始化。从代码来说的话,如下所示。
int a (10);        //直接初始化
int b = 1024;   //复制初始化
抠字面的意思确实不怎么好,初始化不是赋值-->两者主要的区别就是,初始化时创建了一个变量并且给他赋予一个初值,而赋值是擦出当前对象并用新值代替(说了这么多,其实就是有没有新创建对象,囧!!)。最近在看《C++语言的设计与演化》中总是提到“C++是一种静态类型语句”,当时确实不知道是什么意思,现在看了《C++Primer》终于知道了大概意思,所谓的静态类型语言,就是在编译时会作类型检查。

3、声明和定义

声明和定义也是一个比较容易混淆的概念,这里有意见简单的方式来区分到底是声明还是定义。变量的定义主要是是用于为变量分配存储空间,而声明则主要是向程序表明变量的类型和它的名字;
int   i; //声明和定义变量
extern double pi = 3.14159;
extern int i;// 声明变来那个,指明类型和变量名

从上面我们看出,声明和定义的关键区别就是是由从内存中新拿来一块内存,来表示变量。变量的定义只能又一次,而声明则可以有很多次。还有一个要说的就是extern关键字不仅仅是声明哦,还有可能是定义一个变量。


4、关于const的一点总结

const在C/C++中都是修饰一个对象,声明这个对象的值不应该有所改变(我们不能对其进行赋值操作),这里说的对象很多,可以使C/C++的内置数据类型的对象,也可以是我们自定义的类和结构体对象,也可以是指针,引用等等,这里面可能经常要我们进行区分的是const修饰指针所带来的困扰。

 
   int i = 8;
    const int ic = i;
    //int a[ic];
    const int *pic = ⁣
    //int *const cpi = ⁣
    const int *const cpic = ⁣

    i = ic;
    pic = cpic;
    pic = ⁣
    cpic = ⁣
    //cpi = pic;
    ic = *cpic;


上面的一小段代码演示了const修饰指针,我们在工作和学习当中应该遇到过这种情况很多次了,上面const修饰指针的三种方式,指向常对象的指针指向对象的常指针指向常对象的常指针。我们只要记住一个简单的规则就很好区分上述的三个情况了,“看const离什么最近,它就修饰的什么东西”,比如const int *pic = &ic中,const离*pic最近, 那么const修饰的就是pic指向的对象为常对象,同理int *const cpi = NULL中const离cpi最近,那么就表明cpi为一个指向int对象的常指针。

PS:我在这犯错了,常对象要求的是在定义的时候对其进行初始化,而不要求一定要是常量/常量表达式。大家应该看到我后面定义了一个int a[ic]编译的时候会出错,主要是因为这个时候还不知道ic的值,我们不能够定义一个未知大小的数组。




后记

对于基本数据类型,现在才复习了一点,后面继续更新!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值