C++学习第二弹之整数数据类型

本文详细介绍了C++中的整数类型,包括char、short、int、long和long long及其有符号和无符号版本。讲解了每种类型的内存占用和数值范围,并通过示例展示了如何使用sizeof获取类型或变量的字节数。此外,还阐述了常量的定义,推荐在C++中使用const关键字来声明常量,提供了定义常量的实例。

本文主要介绍C++数——整数,包括创建变量和编写各种类型的常量。

整数

不同C++数据类型使用不同的内存来存储整数,内存越大能够表示的数值就越大。同时有的类型可以表示正值和负值,有些不能表示负值。

C++基本整型有char,short,int,long和C++11新增的long long。其中每种类型都有“有符号”和“无符号”的版本。

char:

char用作数值类型时候,与其他类型不同,char在默认情况下既不是没有符号也不是有符号。是否有符号通过设置来实现,将类型设置为signed char或者unsigned char:

signed char a;
unsigned char b;
char c;

其中a,b是分辨是有符号和无符号变量,a的范围是-128~
127,b的范围是0~255,c可能是有符号也可能无符号,不过一般用来存储字符.
char在默认情况下定义变量存储ASCII字符所以有没有符号不重要。

short,int与long

short是short int的简称,long是long int的简称。

short ,int,long和long都是有符号的类型,既可以表示正数,也可以表示负数。他们的区别在于定义变量时候占用内存的大小。

使用sizeof可以得到类型的长度,例如在8位字节的系统中,int长度为4个字节。使用方式如下:
cout<<"int bites is"<<sizeof(int)<<endl;

使用sizeof查看一个变量的长度时使用方式如下:

cout<<"a bites is"<<sizeof a<<endl;


其中a是一个任意类型的变量。

无符号整数

使用无符号类型可以增大正数的最大值,将原先表达负数的内存也用于表示正数。只需要在原先类型的基础上增加unsigned既可。使用示例如下:

`unsigned short a;
 unsigned int b;
 unsigned long c;
 unsigned long long d;`

常量

C语言中使用#define来定义常量。C++也可以使用#define,C++同时还有一种定义常量的方式——const。在C++中定义常量最好使用const。使用方式如下:

const int a=7;

### C++ 中常用数据结构概述 #### 列表(List) 列表是一种线性数据结构,在 C++ 中由标准模板库(STL)提供支持。这种数据结构能够高效地执行插入和删除操作,尤其是在链表的中间位置。列表的特点在于其灵活性——可以根据需求动态调整大小。 ```cpp #include <iostream> #include <list> using namespace std; void show(const list<int>& l) { for (auto it = l.begin(); it != l.end(); ++it) cout << *it << ' '; cout << endl; } int main() { list<int> lst{1, 2, 3}; // 插入元素到列表头部 lst.push_front(0); show(lst); // 删除第一个遇到的特定值 lst.remove(2); show(lst); return 0; } ``` 上述代码展示了如何创建一个整型列表并对其进行基本的操作,比如向头节点前添加新元素以及移除指定数值的首个实例[^1]。 #### 栈(Stack) 栈也是一种重要的抽象数据类型,遵循后进先出原则(LIFO),意味着最后加入堆栈的对象会最先被取出。通过 `std::stack` 可方便地管理这类集合对象。 ```cpp #include <iostream> #include <stack> using namespace std; int main(){ stack<int> s; s.push(1); // 将元素压入栈顶 s.emplace(2); // 同样作用于栈顶 while (!s.empty()){ cout << "Top element is: " << s.top() << '\n'; s.pop(); } } ``` 这段程序演示了怎样利用 STL 提供的功能构建简单的整数栈,并实现了元素的推入与出过程[^3]。 #### 稀疏矩阵表示法 对于大型但大部分为空或者接近零值的情况下的二维数组来说,采用稀疏矩阵形式能节省大量内存空间。下面给出了一种基于三元组的方式定义此类特殊矩阵的方法: ```cpp struct Triplet{ int row; // 行索引 int col; // 列索引 double val; // 对应位置上的非零值 }; class SparseMatrix { private: vector<Triplet*> entries_; // 动态分配存储单元指针容器 public: void addEntry(int r, int c, double v){ auto entry = new Triplet({r,c,v}); entries_.push_back(entry); } // 析构函数负责释放所有已分配资源 ~SparseMatrix(){ for(auto e : entries_) delete e; } }; ``` 此段源码片段描述了一个简易版的稀疏矩阵类及其成员函数之一—addEntry(), 它接受行列坐标加上相应权重作为参数完成单个条目的追加工作[^4].
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值