C++处理数据

2023-10-11 21:17:13 浏览数 (1)

这部分主要讲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 提供了转义序列

const限定符

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

首字母大写

整个大写

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

0 人点赞