C++ 变量和基本类型

标准库定义了四个IO对象,分别是标准输入的cin、标准输出的cout、错误输出cerr,一般信息输出clog。

c++每一个表达式都会产生一个结果,对于操作符是输出输入操作符,接受右操作数返回左操作数的值。比如cin>>i>>j;  

如果理解没错的话,注释在进行预编译的时候就被正则表达式相关定义去除了,那么如果存在块注释/**/状态机寻找的标准是/*直到下一个*/停止,所以注释是不可以嵌套的,比如/* kk/**/dd*/那么dd会被认为是代码段。

习题时 std::cout<</* "*/" */;虽然我们直到输出值被注释,所以导致了右操作数是空的,这是会报错的。

 

基本类型相关


  • 整数型的赋值如果溢出则一般是进行取余操作,比如说对于unsigned char赋值-1结果是255,255是-1对256的求模
  • 字面值常量(literal constant),比如说9等这样的值,按照编译原理的角度来说就是我们正则表达式中的最小表达式的右半部分,如果说我们定义一种变量是num -> 0|1|2|3...9|10 其实这里的0到10就是字面值常量,它们代表的符号已经不能再分割成子成分进行编译成语法树。
  • 所以字面值是因为只能用它们的值来称呼它们,所以常量是因为它的值不能被修改,每一个字面值都有对应的类型。如0是int,3.1415926是double等等。
    • 整型字面值规则:  十进制24;八进制(0零开头)024;十六进制0x14,如果想表示长整形long则在数值后加上L,无符号则加上U,如128U,1024UL等等
    • 浮点型字面值规则:  可以用十进制或者科学计数法,E表示指数,比如3.14159F=3.14159E0F,.001F=1E-3F.  3.14默认是double,3.14f是float,3.14L是long double,1024f是错误的整数1024后不能接f,3.14UL也是错误的L没有U
    • 布尔字面值和字符字面值:  true,false,'a',如果是wchar_t则是L'a'
    • 转义字符序列:  /n /t 等等
    • 字符串字面量:  用双引号括起来的零个或者多个字符表示,为了兼容C,所有的字符串字面量都由编译器自动在末尾添加一个空字符。‘A’   //single quote:character literal   "A"   //double quote:character string literal。
    • 字符串字面量连接,类似于java的形式但是少了+号,如cout<<"a""b""c";结果就是"abc"
  • 对象: 就是内存中具有类型的区域。
    • 定义对象
      • 初始化有两种方式:    1.int  val(1024);   2.int val=1024;   前者叫做直接初始化,后者叫做复制初始化
      • 变量初始化的时候值匹配,比如 int month=09,这是以八进制的形式赋值,此时9已经是超过了。应该是 int month=011
      • 变量初始化规则,如果是内置类型变量的初始化,函数体外的都是初始化为0或者是空字符串,如果是函数体内则不初始化。如果是类类型变量的初始化,无论在哪没有指定初始化式的时候默认都是使用默认构造函数。 
  • 声明和定义,变量必须且仅能定义一次。extern进行声明变量,它不是定义,也不分配存储空间,只是说明变量在程序的其他地方。程序中的变量能声明多次,但只能定义一次。extern double pi=3.14; 定义声明 extern double pi; 声明 double pi;重复定义。注意一点是extern可以声明且定义,但只能是在函数体之外,即变量是全局变量。
  • const限定符,该对象必须初始化,默认是文件的局部变量,如果想在其他文件使用,如下 //file1.cpp extern const int size=19; //file2.cpp extern const int size;  int a=size; ..
  • 引用reference.它实质上是变量的一个别名,和变量指向同一个地址内容。引用一定要初始化,只要该引用存在,它就保持绑定到初始化时指定的对象,不可将引用绑定到另外的对象上。const引用,便是指指向const的变量的引用。实际上,非const引用只能绑定与该引用同类型的变量。const引用是可以绑定到不同但相关的类型对象或者是绑定到右值。
  • 1 int ival=1.01;        //合法,隐式转换成1
    2 int &rval1=1.01;        //非法,非const引用不能是右值
    3 int &rval2=ival;           //合法
    4 const int &rval3=1;          //合法
    5 
    6 rval2=3.14.159;           //合法
    7 rval2=rval3;              //合法
    8 ival=rval3;                //合法
    9 rval3=ival;                //非法,const值不能被修改
    View Code
  • typedef名字,用来定义类型的同义词,  typedef double wages;
  • 枚举, enum open_modes {input ,output,append}  分别代表了 0 ,1, 2 这三个值。 当然也可以自定义常量, enum Points { pd=2,pw,px=3,pl}; ,这个例子中,没有指定值的会默认增加,所以pw=3,pl=4;

 

类类型及其定义


 c++程序经常是由多个文件组成,一个变量一般有声明,定义,初始化这些阶段。声明用于向程序表明变量的类型和名字而已,而定义除了声明还有分配给它相应的存储空间。初始化式必须要有存储空间来进行初始化。

在c++语言中哦,变量必须且仅能定义一次,而且使用变量之前必须定义或者声明变量。

关于具体头文件的限制看这个博文

 

posted @ 2018-05-07 17:31  Grim_Reaper  阅读(2051)  评论(0编辑  收藏  举报