第二章 变量和基本类型

Posted ducktang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第二章 变量和基本类型相关的知识,希望对你有一定的参考价值。

1.基本类型包含算术类型,算术类型又包含整型和浮点型。int最少是两个字节(16位/bit),不同的机子不一样,所以适合搬移是很重要,不要涉及到固定字节的程序。

2.赋值的时候有类型转换的话,强制转换成左边类型。有符号和无符号进行运算,都是先转换成无符号数,有需要再转换成最终结果。

3.变量定义:类型说明符+变量名。初始化,创建一个变量并给这个变量初始值。(何为拷贝,就是最起码这个拷贝是一个对象,并且和你是一样的类型,或者可以进行强制转换的)

4.列表初始化,以及默认初始化,在任何函数体之外,内置类型默认初始值,在函数体内,内置类型不初始化,未定义。

5.支持分离式编译,这样的话便须支持声明和定义。一个文件若想用别处定义的变量或者函数,必须进行声明。extern int i并且没有显式初始化。

6.复合类型,包括引用和指针。引用是左值引用(什么意思,左值的意思不应该是地址么?),int ival=10;int &rval=ival;这就是引用,且必须初始化。引用本身并不是一个对象,所以不能int &&rrval=rval;//错误。int &rrval=rval;这个没问题。

7.指针,也是对象的间接访问。可以先后指向,假如是栈内存或者静态内存其实没啥意思,因为可以通过变量名直接访问,不需要间接。还有一种用途应该是传递变量。不过我可以用引用。int *p=&ival;p=&b;

8.const限定符,如果想其他地方也用const常量的话,需都加extern,定义的地方也要;

9.不能把非常量引用绑定到常量上,这意味着可以修改常量。const int &r=42;这种引用也是可以的,一般用作形参,这样就可以用字面值初始化形参。

const int *const p=π前面这个const表明不能通过*p去修改该pi,后面这个const表示p也不能指向其他int型变量。前面这个是底层const,后面这个是顶层const,本身不能变的是顶层,指向对象不能变的是底层。拷贝的时候要注意底层const,这个属性不能被复制。

10.常量表达式是指值不会变并且在编译过程就能得到计算结果的表达式。字面值是常量表达式,用常量表达式初始化的const值也是常量表达式。

const int a=20;//常量表达式      const int b=a+10;//常量表达式      const int z=get();//不是常量表达式 

也就是说用来初始化的对象必须先是常量表达式。

一般用constexpr就好,如果有问题会报错。(constexpr究竟如何使用也是未知,完全搞不清楚)。

 11.auto和decltype        auto让编译器帮我们推算出类型,以及值。顶层const会被忽略掉。

例如,const int i=2;  auto a=i;这个r不是const的;

           const int &r=i;  auto b=r;这个也不是const的,并且不是引用,这个就是个int类型。

           auto c=&r;这个才是const的,是因为非常量不能引用常量。

           const int *p=&i;auto d=p;这个也是。

decltype则不一样,返回的类型连const和引用都包含在内,

           decltype(r) e=i;e是一个const引用;decltype(i) f=0;f是一个const;

12.数据结构是啥?是一组相关的数据元素组织起来然后使用它们的策略和方法。例如Sales_item就是把isbn号,单价和销售总量组织在一起,并且提供了ISBN函数,+和<<等操作。

以上是关于第二章 变量和基本类型的主要内容,如果未能解决你的问题,请参考以下文章

第二章 变量和基本类型

变量,基本类型,数据类型和运算符

变量,基本类型,数据类型和运算符

Java第二章 变量

第二章

java初学第二章