博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c++中的数据类型
阅读量:6243 次
发布时间:2019-06-22

本文共 4901 字,大约阅读时间需要 16 分钟。

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 
#define SIZE 32int 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",LibraryInfo.reader.Name);printf("input the reader BorrowDate:\n");scanf("%s",LibraryInfo.reader.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",LibraryInfo.reader.Name);printf("借阅日期:%s",LibraryInfo.reader.Date);return 0;}

 

  

 6.联合体

   联合体的使用方式和结构体及普通变量类似。

  union 名称{

  类型变量符 变量名;

   ......

    类型变量符 变量名;

  };

 联合体的主要作用就是节省内存,因为联合体中的·变量不像结构体中的成员变量那样,系统会给其中的每一个变量都分配相应的内存。在联合体中,所有的成员变量共享一块内存空间。该内存空间是其成员变量中占字节数最多的变量所占用的内存空间,并且所有的成员变量共用这一块内存空间,因此联合体中所有成员变量地址是一样的。

示例代码:

#include 
#define SIZE 32int 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 
#include
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; PreSeason3=AUTOMN3; printf("curSeason1 is %d\n",curSeason1);//3 printf("PreSeason1 is %d\n",PreSeason1);//2 printf("curSeason2 is %d\n",curSeason2);//5 printf("PreSeason2 is %d\n",PreSeason2);//4 printf("PreSeason2 is %d\n",curSeason3);//6 printf("PreSeason2 is %d\n",PreSeason3);//5 printf("SUMMER3 is %d\n",SUMMER3);//2 SUMMER3 cout << SUMMER3 <

  

 先写这么多,以后再补充。。

转载地址:http://jlsia.baihongyu.com/

你可能感兴趣的文章
基于Spring Boot实现图片上传/加水印一把梭操作
查看>>
聊聊storm的LoggingClusterMetricsConsumer
查看>>
vue-waterfall2 基于Vue.js 瀑布流组件
查看>>
Vue一个案例引发的递归组件的使用
查看>>
Canvas 实现一个简单的贪吃蛇
查看>>
前后端导出/下载excel方法
查看>>
JVM之垃圾回收与内存动态分配
查看>>
Numpy中的广播原则/机制
查看>>
DOM编程系列之事件
查看>>
小程序加载svg图片
查看>>
JavaScript面向对象编程-多态
查看>>
sequelize 管理查询——一对一关联查询
查看>>
PHP下kafka的常用脚本实践
查看>>
AJAX
查看>>
百度地图绘制点、图形
查看>>
PHP 文件系统完全指南
查看>>
PyQt5,RadioButton
查看>>
js设计模式(二)-工厂模式
查看>>
前端技术周刊 2018-08-13:Web Components
查看>>
kube-proxy源码解析
查看>>