c++中的数据类型
1.数据类型简介
c++中数据类型分为两种:预定义类型和⾃定义数据类型。
预定义类型:整型(int 4个字节)
字符型
布尔型(bool)
浮点型(4个字节)
空类型:关键字void,不能⽤于普通变量的声明和普通的操作,只能⽤于指针型变量,函数返回值和函数参数。
指针类型
⾃定义类型:数组、结构体(struct)、联合体(union)、枚举(enum).具体在下边介绍
2.类型修饰符:
signed,unsigned,short,long。
signed int a;//有符号整数
short int a;//短整型,2个字节
long int a;//长整型,4个字节
c++11中新增:long long整型有两种:long long和unsigned long long。在C++11中,标准要求long long整型可以在不同平台上有不同的长度,但⾄少有64位。我们在写常数字⾯量时,可以使⽤LL后缀(或是ll)标识⼀个long long类型的字⾯量,⽽ULL(或ull、Ull、uLL)表⽰⼀个unsigned long long类型的字⾯量。⽐如:
long long int lli = -9000000000000000000LL;
unsigned long long int ulli = -9000000000000000000ULL;
另外这⼏个符号只能修饰int。
3.占位符总结:
%d:int
%ld:long
%f:float
%lf:double
%p:输出变量地址
%x/%X:输出⼗六进制数
%s:输出字符串
%o:⽆符号⼋进制整数
%u:⽆符号⼗进制整数
%e/%E:⽤科学记数法输出浮点数
4.基本数据类型代码⽰例:
#include"stdio.h"
int a;
float b;
double c;
void ceshi();
int main(void)
{
int d;
int num=2147483646;//和最⼤值差1  最⼤值:2147483647
float f=1.234567;
char arr[]="abc";
printf("num=%d\n",num+21);//-2147483648;
printf("f=%f\n",f/4);//0.308642
printf("arr的地址:%p\n",arr);//0028FEFC
printf("arr的字符串:%s\n",arr);//abc
long int lnum;
printf("长整型占⽤字节数:%d\n",sizeof(lnum));//4
printf("整型占⽤字节数:%d\n",sizeof(num));//4
printf("默认值:%d\n",lnum);//38 随机的
printf("main默认值:%d\n",d); //随机数
printf("默认值:%f\n",b);  //0.000000
printf("默认值:%f\n",c);  //0.000000
printf("默认值:%lf\n",c);  //0.000000
ceshi();
return 0;
}
void ceshi(){
int a=2,b=3,c=5,num;
num=a+b%c;
printf("jisuan: %d\n",num);//5
char cc[64];
scanf("%s",cc);
printf("输⼊的值为:%s aa\n",cc);
}
5.结构体数据类型
5.1结构体是由⼀系列具有相同类型或者不同类型的数据构成的数据集合。定义:
struct 名称{
数据类型变量名1;
数据类型变量名2;
。。。。
数据类型变量名n;
}结构体变量名;
5.2结构体数组:
struct Info{
int age;
char name[32];
}info[SIZE];
5.3结构体嵌套:
struct BookInfo{
char name[SIZE];
char author[SIZE];
int status;
};
struct ReadreInfo{
char Name[SIZE];
char Date[SIZE];
};
//结构体嵌套
struct LibraryInfo{
int ID;
struct BookInfo book;
struct ReadreInfo reader;
}LibraryInfo;
代码⽰例:
#include <stdio.h>
#define SIZE 32
int main(void){
struct BookInfo{
char name[SIZE];
char author[SIZE];
int status;
};
struct ReadreInfo{
char Name[SIZE];
char Date[SIZE];
};
//结构体嵌套
struct LibraryInfo{
int ID;
struct BookInfo book;
struct ReadreInfo reader;
}LibraryInfo;
printf("input the book id:\n");
scanf("%d",&LibraryInfo.ID);
printf("input the book name:\n");
scanf("%s",LibraryInfo.book.name);
printf("input the book author:\n");
scanf("%s",LibraryInfo.book.author);
printf("input the book status:\n");
scanf("%d",&LibraryInfo.book.status);
printf("input the reader name:\n");
scanf("%s",ader.Name);
printf("input the reader BorrowDate:\n");
scanf("%s",ader.Date);
printf("图书信息如下:\n");
printf("图书编号:%d\n",LibraryInfo.ID);
printf("书名:%s\n",LibraryInfo.book.name);
printf("图书作者:%s\n",LibraryInfo.book.author); printf("图书当前状态:%d\n",LibraryInfo.book.status); printf("读者姓名:%s",ader.Name); printf("借阅⽇期:%s",ader.Date);
return 0;
}
6.联合体
联合体的使⽤⽅式和结构体及普通变量类似。
union 名称{
类型变量符变量名;
......
类型变量符变量名;
};printf怎么加endl
联合体的主要作⽤就是节省内存,因为联合体中的·变量不像结构体中的成员变量那样,系统会给其中的每⼀个变量都分配相应的内存。在联合体中,所有的成员变量共享⼀块内存空间。该内存空间是其成员变量中占字节数最多的变量所占⽤的内存空间,并且所有的成员变量共⽤这⼀块内存空间,因此联合体中所有成员变量地址是⼀样的。
⽰例代码:
#include <stdio.h>
#define SIZE 32
int main(void){
union Info{
int age;
char Name[32];
char Address[64];
}info;
printf("input age:\n");
scanf("%d",&info.age);
printf("age:%d\n",info.age);
printf("input name:\n");
scanf("%s",info.Name);
printf("name:%s\n",info.Name);
printf("input address:\n");
scanf("%s",info.Address);
printf("address:%s\n",info.Address);//jinan
printf("name:%s\n",info.Name); //jinan 和上边的⼀样,被覆盖
printf("age:%d\n",info.age);  //1634625898
printf("name地址:%p\n",info.Name);
printf("age地址:%p\n",&info.age); //0028FED0地址和上边⼀样
return 0;
}
  、、
从图中可以看出:最下边address和name最后的输出是⼀样的,jinan把前边的chaochao覆盖掉啦另外它所有变量的地址也是⼀样的。
7.枚举类型
enum 枚举类型名{
元素列表;
};
例:enum Season{SPRING,SUMMER,AUTOMN,WINTER};
⽰例代码:
#include <iostream>
#include <stdio.h>
using namespace std;
int testEnum();
int main()
{
cout << "Hello world!" << endl;
testEnum();
return 0;
}
//枚举类型中的变量为整型常量,除了定义时可以赋值外,其他时间都不可以
int testEnum(){
enum FourSeason1{
SPRING,
SUMMER,
AUTOMN,
WINTER
};
enum FourSeason2{
SPRING2=2,
SUMMER2,
AUTOMN2,
WINTER2
};
enum FourSeason3{
SPRING3=1,
SUMMER3,
AUTOMN3=5,
WINTER3
};
enum FourSeason1 curSeason1,PreSeason1;
enum FourSeason2 curSeason2,PreSeason2;
enum FourSeason3 curSeason3,PreSeason3;
curSeason1=WINTER;
PreSeason1=AUTOMN;
curSeason2=WINTER2;
PreSeason2=AUTOMN2;
curSeason3=WINTER3;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。