The New C++ -- 基本数据类型和字面值常量 (3. sizeof表达式和typeid表达式)
2012-02-09 17:06
666 查看
C++提供了一些机制让我们知道一个编译器中的整型(或者其他任何类型)占多少内存空间,那就是sizeof表达式。sizeof(类型)返回该类型在内存中占用的空间(单位为字节)。例如下面的程序,
这个程序在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>,示例如下。
除了sizeof之外,通过typeid表达式可以知道某个类型的名字。例如,
这个例子看起来也许没什么用处,因为我们已经知道类型的名字了。但有时当我们不知道类型名的时候就有用处了。我们会在后面介绍typeid表达式的更多用法。
#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++ -- 基本数据类型和字面值常量 (7. 浮点型和浮点字面值常量)
- The New C++ -- 基本数据类型和字面值常量 (5. 宽字符类型和宽字符字面值常量)
- The New C++ -- 基本数据类型和字面值常量 (1)
- The New C++ -- 基本数据类型和字面值常量 (8. 字符串字面值常量)
- The New C++ -- 基本数据类型和字面值常量 (2. 整型和整数字面值常量)
- The New C++ -- 基本数据类型和字面值常量 (4. 字符型和字符字面值常量)
- The New C++ -- 基本数据类型和字面值常量 (6. 布尔型和布尔字面值常量)
- The New C++ -- 变量 (5. sizeof表达式,typeid表达式和地址操作符)
- 第二节 变量 、 基本类型 、 运算符 、 表达式 、 数据 、 类型转换 、 常量
- c++ 中常量与变量 基本数据类型
- 【C++】基本的数据类型(二) 字符型常量的表示方法
- C++基本数据类型字面值
- C语言基础知识之(一):进制、基本数据类型、常量、变量、表达式、语句
- C++ 基本数据类型和表达式
- C++ 基础知识点 一第2章 基本数据类型、运算符与表达式
- 求变量的数据类型,typeid,bool,C和C++的不同,new和delete,C++中的枚举,inline和可变参数模板,auto和函数模板,宽字符
- C++ 学习笔记(19)new/delete表达式、定位new、typeid、dynamic_cast、type_info、枚举类型、成员函数指针、union、位域、volatile限定符、链接指示
- C++系列之基本数据类型、常量、变量、const、引用、typedef、枚举、类类型、编写自己的头文件
- 基础( 1 ):C++基本数据类型和表达式
- Java语言基础{Java_se(02)}-字面量和常量-变量的基本定义和使用-Java表达式-数据类型和分类-基本数据类型的转换-算数运算符-赋值运算符-比较运算符-三元运算符-逻辑运算符