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",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 <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;
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 <<endl; return 0;
}
先写这么多,以后再补充。。
c++中的数据类型的更多相关文章
- JavaScript 中的数据类型
Javascript中的数据类型有以下几种情况: 基本类型:string,number,boolean 特殊类型:undefined,null 引用类型:Object,Function,Date,Ar ...
- hibernate中java类的成员变量类型如何映射到SQL中的数据类型变化
hibernate映射文件??.hbm.xml配置映射元素详解--Hibernate映射类型 在从Hibernate的java的成员类型映射到SQL中的数据类型,其内映射方式它满足,SQL可以自己调制 ...
- js中的数据类型
JS中的数据类型: ——数字 (number)NaN ——字符串(string) ——布尔 (boolean)——函数 (function) 也是对象的一种 ——对象 (object) ...
- 如何判断js中的数据类型?
js六大数据类型:number.string.object.Boolean.null.undefined string: 由单引号或双引号来说明,如"string" number: ...
- 如何判断js中的数据类型
如何判断js中的数据类型:typeof.instanceof. constructor. prototype方法比较 如何判断js中的类型呢,先举几个例子: var a = "iamstri ...
- c中的数据类型、常量、变量
一. 数据 1. 什么是数据 生活中时时刻刻都在跟数据打交道,比如体重数据.血压数据.股价数据等.在我们使用计算机的过程中,会接触到各种各样的数据,有文档数据.图片数据.视频数据,还有聊QQ时产生的文 ...
- [转]如何判断js中的数据类型
原文地址:http://blog.sina.com.cn/s/blog_51048da70101grz6.html 如何判断js中的数据类型:typeof.instanceof. constructo ...
- 数据库中字段类型对应的C#中的数据类型
数据库中字段类型对应C#中的数据类型: 数据库 C#程序 int int32 text string bigint int64 binary System.Byte[] ...
- C++中各种数据类型占据字节长度
准备校招笔试的时候经常遇到C++某个数据类型占据多少个字节的问题,查阅了下资料,总结如下: 首先罗列一下C++中的数据类型都有哪些: 1.整形:int.long 2.字符型:char.wchar_t ...
- Oracle中的数据类型和数据类型之间的转换
Oracle中的数据类型 /* ORACLE 中的数据类型: char 长度固定 范围:1-2000 VARCHAR2 长度可变 范围:1-4000 LONG 长度可变 最大的范围2gb 长字符类型 ...
随机推荐
- 跨平台的.NET运行环境 Mono 3.2发布
Mono是由Xamarin主办的一个开源项目平台,旨在让开发人员轻松构建跨平台的应用程序.Mono是基于ECMA标准来创建.NET框架,包括C#编译器和公共语言运行时(CLR),可以让.NET应用程序 ...
- NPOI导入导出EXCEL通用类,供参考,可直接使用在WinForm项目中
以下是NPOI导入导出EXCEL通用类,是在别人的代码上进行优化的,兼容xls与xlsx文件格式,供参考,可直接使用在WinForm项目中,由于XSSFWorkbook类型的Write方法限制,Wri ...
- 【C#】让工具栏ToolStrip能触发焦点控件的Leave、Validating、DataError等事件以验证数据
----------------更新:2014-04-21--------------- 蒙doggo兄指教,得知有更好的方法可以代替蹩脚的0尺寸Button法,即调用窗体的验证方法Form.Vali ...
- inner join on, left join on, right join on的区别与介绍
Table A aid adate 1 a1 2 a2 3 a3 TableB bid bdate 1 b1 2 b2 4 b4 两个表a,b相连接, ...
- c#如何采集需要登录的页面
首先说明:代码片段是从网络获取,然后自己修改.我想好的东西应该拿来分享. 先说下原理:当我们采集页面的时候,如果被采集的网站需要登录才能采集.不管是基于Cookie还是基于Session,我们都会首先 ...
- C# POST Https请求的一些坑
写在前面: 从上次,跟合作方的站点对接开始就产生了这个问题,当时用C#进行POST提交,总是会出现问题,找了很久发现对方的站点居然是TLS 1.2 的. 正文: 然而,在.NET FrameWork ...
- 高德携手阿里云发布“LBS云”,账户打通只是第一步
位置.游戏.视频,是公认的基于云计算的三大移动端应用方向.而今,LBS云有了更多进展,在高价值应用与云平台之间实现了资源打通和融合,高德迈出了实质性的一步. 高德地图副总裁郄建军(左)与阿里云业务总经 ...
- Bash脚本实现批量作业并行化
http://jerkwin.github.io/2013/12/14/Bash%E8%84%9A%E6%9C%AC%E5%AE%9E%E7%8E%B0%E6%89%B9%E9%87%8F%E4%BD ...
- InfluxDB学习系列教程,InfluxDB入门必备教程
nfluxDB是一个当下比较流行的时序数据库,InfluxDB使用 Go 语言编写,无需外部依赖,安装配置非常方便,适合构建大型分布式系统的监控系统. 本文是一系列InfluxDB学习教程的目录,现主 ...
- jquery学习笔记:获取下拉框的值和下拉框的txt
<div class="form-group"> <select class="form-control" id="iv_level ...