前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C++处理数据

C++处理数据

作者头像
用户7272142
发布2023-10-11 21:17:13
1740
发布2023-10-11 21:17:13
举报
文章被收录于专栏:Republic博客Republic博客

这部分主要讲C++++中的数据类型及其变体 前面也没用这方面的笔记,刚好趁着C++再复习一次 我们申明变量 int age; age = 15;语句告诉程序正在存储整数,程序找到一块能够存储整数的内存,将内存单元标记为age,然后把5拷贝到这个内存单元。

整型

C++提供了好几种整型,可以根据程序的具体需求选择合适的整型。不同C++整型类型占用的内存也不一样,占用内存越大,整型数值的范围也就越大,整型还分为有符号和无符号,即是否可表示正负。基本类型分别是short、int、long和long long 且他们通过使用不同的位数存储值,满足

short至少位

int至少于short一样长

long至少与int一样长

lomg long至少为64位 计算机的基本单位是字节 一个字节有8位 一位可以表示0和1,8位单元可以表示0-255或者-128到127 没有申明无符号型的话基本都是有符号类型的,那么我们该如何获取类型的限制信息 头文件climits中包含了关于整型限制的信息。 INT_MAX为int的最大取值 CHAR_BIT为字节的位数。

代码语言:javascript
复制
#include<iostream>
#include<climits>
using namespace std;
int main()
{
  int n_int = INT_MAX;
  short n_short = SHRT_MAX;
  long n_long = LONG_MAX;
  long long n_llong = LLONG_MAX;
  //sizeof operator
  cout << "int is " << sizeof(n_int) << " bytes" << endl;
  cout << "short is " << sizeof(n_short) << " bytes" << endl;
  cout << "long is " << sizeof(n_long) << " bytes" << endl;
  cout << "long  long is " << sizeof(n_llong) << " bytes" << endl;
  cout << endl;
  cout << "Maximum values " << endl;
  cout << "int " << n_int << endl;
  cout << "short " << n_short << endl;
  cout << "long " << n_long << endl;
  cout << "long long " << n_llong << endl;
  cout << "Minimum values " << INT_MIN<<endl;
  cout << "Bits per byte = " << CHAR_BIT << endl;//字节的位数

}

关于预编译处理,我之前有笔记已经详细讲过,只是单纯的字符串替换 关于变量赋值C++有C语言没有的初始化语法 int x{16}; 如何声明无符号数据类型 只需使用关键字unsigned 修改声明即可

代码语言:javascript
复制
#include<iostream>
#include<climits>
#define ZERO 0
using namespace std;
int main()
{
  short sam = SHRT_MAX;
  unsigned short sue = sam;
  cout << "sam = " << sam << " sue = " << sue << endl;
  sam = sam + 1;
  sue = sue + 1;
  cout << "sam = " << sam<< " sue = " << sue << endl;
  sam = ZERO;
  sue = ZERO;
  cout << "sam = " << sam << " sue = " << sue << endl;
  sam = sam - 1;
  sue = sue - 1;
  cout << "sam = " << sam << " sue = " << sue << endl;
}

如果超越了限制,其值将为范围另一端的取值。有迷惑的可以看看前面的位运算。

选择整型类型

int被设置为对目标计算机而言最为自然的长度,指的是计算机处理起来效率最高的长度,如果我们表示大于十六位的整数 最小大可以表示2^16(32767) 如果在32位系统可以用int表示 2147483647 ,这时候用int移植到16位系统时,就会无法正常工作,所以选择合适的数据类型是很重要的。以及包括整型数组使用short比int更加省内存,16位到32位系统数组内存并没有扩大。 C++可以以三种不同的计数方法,我们常见的157 123是以10为基数,C++使用前一俩位标识数字,如果第一位是1~9则基数为10如果第一位是0,第二位是1-7则,基数是8,如果前两位是0x或者0X,则基数是16。0XA65 = 5*16^0+6*16^1+A*16^2 = 2661 此外cout还提供了控制符dec hex和oct用来显示十进制 十六进制和八进制 比如

代码语言:javascript
复制
int h = 10;
cout<<hex
  <<"h = "<<h<<endl;

C++确定常量的类型

程序如何确认常量是按什么类型存储,后缀表明了数字常量的符号,如果是l表示long,u表示无符号整数。对于不带后缀的十进制数,,将使用几种类型中可以存储该值的最小类型来表示:int long ,long long。如果是十六进制或八进制整数,将使用int unsigned int long unsigned long long long 或者unsigned long long 。unsigned int 表示范围比int范围对于内存地址这类无符号要大

char类型

char转为存储字符(字母和数字)而设计的。存储数字对于计算机算不了什么,编程语言通过数值编码实现了对字母的存储,一个char是八位,他可以存储-128~127的范围,如果是无符号它可以存放0~255 很多系统支持的字符不超过128个,虽然一般被用来表示字符,但它比作比short更小的整型类型。 我们平时常见的是Ascii码以及Unicode字符集,即宽窄字符,这在后面mfc的时候我会详细介绍。

代码语言:javascript
复制
#include<iostream>
using namespace std;
int main()
{
  char ch = 'M';
  int i = ch;
  cout << "the Ascii code for " << ch << " is " << i << endl;
  cout << "ADD one to code" << endl;
  ch = ch + 1;
  i = ch;
  cout << "the Ascii code for " << ch << " is " << i << endl;
  cout.put(ch);
  cout.put('!');
}

cin和cout会根据变量类型转换输出和输入,但作为内存存储,它是以数值编码存储的 我们根据cout引出成员函数的概念,成员函数归类所有,定义了如何表示和控制数据。这个put方法就是类对象cout来输出字符,要通过对象使用成员函数,必须用句点将对象名和函数名称put连接起来。句点被称为成员运算符。 ''表示字符常量,这样不管在什么系统下都表示是字符常量,不会因为编码不同造成错误,对于一些无法从键盘输入的字符,C++提供了转义序列

image.png
image.png

const限定符

前面我们用到了#define定义常量的方法,const可以更好地定义常量。 const int Months = 12; 常量被初始化,其值被固定了,编译器不准再修改该常量的值,因此const也叫限定符,常量的命名约定

首字母大写

整个大写

以k开头的命名 以上不是通用约定,创建格式const type name = value;尽量在申明中初始化值

本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-09-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 整型
  • 选择整型类型
  • C++确定常量的类型
    • char类型
    • const限定符
    相关产品与服务
    对象存储
    对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
    http://www.vxiaotou.com