The New C++ -- 基本数据类型和字面值常量 (3. sizeof表达式和typeid表达式)
来源:互联网 发布:fifaonline韩服数据库 编辑:程序博客网 时间:2024/05/22 06:28
C++提供了一些机制让我们知道一个编译器中的整型(或者其他任何类型)占多少内存空间,那就是sizeof表达式。sizeof(类型)返回该类型在内存中占用的空间(单位为字节)。例如下面的程序,
#include<iostream>int main(){ std::cout << sizeof(short int) << " " << sizeof(int) << " " << sizeof(long int) << " " sizeof(long long int) << std::endl; return 0;}
这个程序在Visual C++和GCC中的输出都为 2 4 4 8。
小知识:在现在绝大多数32位系统中,short int一般是16位,int是32位,long int是32位,long long int是64位。在现在的64位系统中,short int一般是16位,int是32位,long int是32位或者64位,long long int是64位。对大多数现存的8位和16位的嵌入式处理器的编译器来讲,short int和int一般都是16位,long int是32位,long long int是64位。你可以查找你所用的系统以及编译器的使用手册来确定不同整型的存储范围。
练习:
要得到不同编译器所定义的整型的最小值和最大值除了sizeof外还有一种方法。请输入下面这个程序,查看运行结果,并尝试解释程序是如何运行的。
通过C++的库文件<limits>,示例如下。
#include <iostream>#include <limits>int main(){ std::cout << "short int: " << std::numeric_limits<short int>::min() << ", " << std::numeric_limits<short int>::max() << std::endl; std::cout << "unsigned short int: " << std::numeric_limits<unsigned short int>::min() << ", " << std::numeric_limits<unsigned short int>::max() << std::endl; std::cout << "int: " << std::numeric_limits<int>::min() << ", " << std::numeric_limits<int>::max() << std::endl; std::cout << "unsigned int: " << std::numeric_limits<unsigned int>::min() << ", " << std::numeric_limits<unsigned int>::max() << std::endl; std::cout << "long int: " << std::numeric_limits<long int>::min() << ", " << std::numeric_limits<long int>::max() << std::endl; std::cout << "unsigned long int: " << std::numeric_limits<unsigned long int>::min() << ", " << std::numeric_limits<unsigned long int>::max() << std::endl; std::cout << "long long int: " << std::numeric_limits<long long int>::min() << ", " << std::numeric_limits<long long int>::max() << std::endl; std::cout << "unsigned long long int: " << std::numeric_limits<unsigned long long int>::min() << ", " << std::numeric_limits<unsigned long long int>::max() << std::endl; return 0;}
除了sizeof之外,通过typeid表达式可以知道某个类型的名字。例如,
std::cout << typeid(unsigned long long int).name() << std::endl;
这个例子看起来也许没什么用处,因为我们已经知道类型的名字了。但有时当我们不知道类型名的时候就有用处了。我们会在后面介绍typeid表达式的更多用法。
- The New C++ -- 基本数据类型和字面值常量 (3. sizeof表达式和typeid表达式)
- The New C++ -- 基本数据类型和字面值常量 (1)
- The New C++ -- 基本数据类型和字面值常量 (2. 整型和整数字面值常量)
- The New C++ -- 基本数据类型和字面值常量 (8. 字符串字面值常量)
- The New C++ -- 基本数据类型和字面值常量 (4. 字符型和字符字面值常量)
- The New C++ -- 基本数据类型和字面值常量 (5. 宽字符类型和宽字符字面值常量)
- The New C++ -- 基本数据类型和字面值常量 (6. 布尔型和布尔字面值常量)
- The New C++ -- 基本数据类型和字面值常量 (7. 浮点型和浮点字面值常量)
- The New C++ -- 变量 (5. sizeof表达式,typeid表达式和地址操作符)
- 基本数据类型和表达式
- C语言程序设计教程笔记_基本数据类型、常量、变量和表达式
- c 基础数据类型和基本表达式
- Java语言基础{Java_se(02)}-字面量和常量-变量的基本定义和使用-Java表达式-数据类型和分类-基本数据类型的转换-算数运算符-赋值运算符-比较运算符-三元运算符-逻辑运算符
- C语言中的常量和字面值
- [C++] constexpr和常量表达式
- C++ 基本数据类型和表达式
- 常量和常量表达式
- Objective-C学习笔记三:基本数据类型和表达式
- 十一张图让你轻松学会用VS打包
- Sicily 1394. Root of the Problem
- JQuery Learning(4):JQuery events
- 从java jar文件包中读资源的常用方法
- linux环境下BDI3000固件程序更新
- The New C++ -- 基本数据类型和字面值常量 (3. sizeof表达式和typeid表达式)
- 窗口动态效果
- 淘宝网的网站服务器
- 读书笔记集
- (2011年java基础)设计模式总结(简述)
- java异步处理
- Quote
- 《深入理解Windows操作系统》笔记4
- Java线程总结