2.C++数据类型

目录

 

1.C++基本数据类型

2.typedef 声明

3.枚举类型

4.extern 关键字声明在变量和函数之前的说明。

5.初始化局部变量和全局变量

6.宏定义 #define 和常量 const 的区别

7.运算符


1.C++基本数据类型

所以 wchar_t 实际上的空间是和 short int 一样。

 

2.typedef 声明

typedef type newname; 就是换个名字而已。。。

关键字 typedef 在编译阶段有效,由于是在编译阶段,因此 typedef 有类型检查的功能。

#define 则是宏定义,发生在预处理阶段,也就是编译之前,它只进行简单而机械的字符串替换,而不进行任何检查

#define 没有作用域的限制,只要是之前预定义过的宏,在以后的程序中都可以使用。而 typedef 有自己的作用域。

注意:define是简单的文本替换,也就是说这并没有你想的那么好用比如说
#include<stdio.h>
#define add(a,b) a*b
#define add1(a,b) (a)*(b) 
int main (void)
{
	printf ("%d\n",add(1,2));		//2
	printf ("%d\n",add(1+2,2+3));	//8
	printf ("%d\n",add1(1+2,2+3));	//15
}

关于 typedef 的几点说明:

  1. typedef 可以声明各种类型名,但不能用来定义变量。用 typedef 可以声明数组类型、字符串类型,使用比较方便。
  2. 用typedef只是对已经存在的类型增加一个类型名,而没有创造新的类型。
  3. 当在不同源文件中用到同一类型数据(尤其是像数组、指针、结构体、共用体等类型数据)时,常用 typedef 声明一些数据类型,把它们单独放在一个头文件中,然后在需要用到它们的文件中用 #include 命令把它们包含进来,以提高编程效率。
  4. 使用 typedef 有利于程序的通用与移植。有时程序会依赖于硬件特性,用 typedef 便于移植

3.枚举类型

enum 枚举名{ 
     标识符[=整型常数], 
     标识符[=整型常数], 
... 
    标识符[=整型常数]
} 枚举变量;
    

例如,下面的代码定义了一个颜色枚举,变量 c 的类型为 color。最后,c 被赋值为 "blue"。

enum color { red, green, blue } c;
c = blue;

默认情况下,第一个名称的值为 0,第二个名称的值为 1,第三个名称的值为 2,以此类推。但是,您也可以给名称赋予一个特殊的值,只需要添加一个初始值即可。

enum color { red, green=5, blue };

在这里,blue 的值为 6,因为默认情况下,每个名称都会比它前面一个名称大 1,但 red 的值依然为 0

## 枚举类型不一定要在 main 中定义:

#include <iostream>
using namespace std;
enum time 
{ 
    first,second,
    third,forth,fifth
};

int main()
{
    enum time a=fifth;
    if (a==fifth) 
    {
        cout << "Succeed!";
    }
    return 0;
}
为了方便枚举的使用,应该和 typedef 结合使用,例如:

typedef enum BAYER_PATTERN{
    BAYER_RG=0,
    BAYER_BG,
    BAYER_GR,
    BAYER_GB
}BAYER_PATTERN;
使用的时候就不用再 enum BAYER_PATTERN color = BAYER_RG; 了,而可以直接用:

BAYER_PATTERN color = BAYER_RG;

 

 

4.extern 关键字声明在变量和函数之前的说明。

1、作用在变量之前

变量只允许定义一次,但可以在多个文件中声明。

2、作用在函数之前

extern void Fun();   // 函数声明,extern 用于标识此函数为外部可调用函数

 

5.初始化局部变量和全局变量

局部变量被定义时,系统不会对其初始化,您必须自行对其初始化。定义全局变量时,系统会自动初始化为下列值

 

6.宏定义 #define 和常量 const 的区别

类型和安全检查不同

宏定义是字符替换,没有数据类型的区别,同时这种替换没有类型安全检查,可能产生边际效应等错误;

const常量是常量的声明,有类型区别,需要在编译阶段进行类型检查

编译器处理不同

宏定义是一个"编译时"概念,在预处理阶段展开,不能对宏定义进行调试,生命周期结束与编译时期;

const常量是一个"运行时"概念,在程序运行使用,类似于一个只读行数据

存储方式不同

宏定义是直接替换,不会分配内存,存储与程序的代码段中;

const常量需要进行内存分配,存储与程序的数据段中

 

#define定义以后取消

void f1()
{
  #define N 12
  const int n = 12;

  #undef N //取消宏定义后,即使在f1函数中,N也无效了
  #define N 21//取消后可以重新定义
}

 

7.运算符

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值