<!-- flowchart 箭头图标 勿删 -->
<svg style="display: none;">
<path d="M5,0 0,2.5 5,5z" id="raphael-marker-block" stroke-linecap="round" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path>
</svg>
<h2 id="1-机器字长机器字长是指计算机进行一次整数运算所能处理的二进制数据的位数整数运算即定点整数运算因为计算机中数的表示有定点数和浮点数之分定点数又有定点整数和定点小数之分这里所说的整数运算即定点整数运算机器字长也就是运算器进行定点数运算的字长通常也是cpu内部数据通道的宽度">1. <font color="red"><strong>机器字长</strong></font>:机器字长是指计算机进行一次整数运算所能处理的二进制数据的位数(整数运算即定点整数运算)。因为计算机中数的表示有定点数和浮点数之分,定点数又有定点整数和定点小数之分,这里所说的整数运算即定点整数运算。机器字长也就是运算器进行定点数运算的字长,通常也是CPU内部数据通道的宽度。。</h2>
<p>算术类型的存储空间按照机器而定。一般,short类型为半个机器字长,int为一个机器字长,long为1或2个机器字长,float为一个机器字长,double为两个字,long double用3或4个字长。</p>
<h2 id="2-c基本数据类型">2. C++基本数据类型</h2>
<table>
<thead>
<tr>
<th>数据类型名称</th>
<th align="right">字节数</th>
<th align="center">别名</th>
<th align="center">取值范围</th>
</tr>
</thead>
<tbody><tr>
<td>int</td>
<td align="right">*</td>
<td align="center">signed,signed int</td>
<td align="center">由操作系统决定,即与操作系统的"字长"有关</td>
</tr>
<tr>
<td>unsigned int</td>
<td align="right">*</td>
<td align="center">unsigned</td>
<td align="center">由操作系统决定,即与操作系统的"字长"有关</td>
</tr>
<tr>
<td>__int8</td>
<td align="right">1</td>
<td align="center">char,signed char</td>
<td align="center">–128 到 127</td>
</tr>
<tr>
<td>__int16</td>
<td align="right">2</td>
<td align="center">short,short int,signed short int</td>
<td align="center">–32,768 到 32,767</td>
</tr>
<tr>
<td>__int32</td>
<td align="right">4</td>
<td align="center">signed,signed int</td>
<td align="center">–2,147,483,648 到 2,147,483,647</td>
</tr>
<tr>
<td>__int64</td>
<td align="right">8</td>
<td align="center">无</td>
<td align="center">–9,223,372,036,854,775,808 到 9,223,372,036,854,775,807</td>
</tr>
<tr>
<td>bool</td>
<td align="right">1</td>
<td align="center">无</td>
<td align="center">false 或 true</td>
</tr>
<tr>
<td>char</td>
<td align="right">1</td>
<td align="center">signed char</td>
<td align="center">–128 到 127</td>
</tr>
<tr>
<td>unsigned char</td>
<td align="right">1</td>
<td align="center">无</td>
<td align="center">0 到 255</td>
</tr>
<tr>
<td>short</td>
<td align="right">2</td>
<td align="center">short int,signed short int</td>
<td align="center">–32,768 到 32,767</td>
</tr>
<tr>
<td>unsigned short</td>
<td align="right">2</td>
<td align="center">unsigned short int</td>
<td align="center">0 到 65,535</td>
</tr>
<tr>
<td>long</td>
<td align="right">4</td>
<td align="center">long int,signed long int</td>
<td align="center">–2,147,483,648 到 2,147,483,647</td>
</tr>
<tr>
<td>long long</td>
<td align="right">8</td>
<td align="center">none (but equivalent to __int64)</td>
<td align="center">–9,223,372,036,854,775,808 到 9,223,372,036,854,775,807</td>
</tr>
<tr>
<td>unsigned long</td>
<td align="right">4</td>
<td align="center">unsigned long int</td>
<td align="center">0 到 4,294,967,295</td>
</tr>
<tr>
<td>enum</td>
<td align="right">*</td>
<td align="center">无</td>
<td align="center">由操作系统决定,即与操作系统的"字长"有关</td>
</tr>
<tr>
<td>float</td>
<td align="right">4</td>
<td align="center">无</td>
<td align="center">3.4E +/- 38 (7 digits)</td>
</tr>
<tr>
<td>double</td>
<td align="right">8</td>
<td align="center">无</td>
<td align="center">1.7E +/- 308 (15 digits)</td>
</tr>
<tr>
<td>long double</td>
<td align="right">8</td>
<td align="center">无</td>
<td align="center">1.7E +/- 308 (15 digits)</td>
</tr>
<tr>
<td>wchar_t</td>
<td align="right">2</td>
<td align="center">__wchar_t</td>
<td align="center">0 到 65,535</td>
</tr>
</tbody></table>
<h2 id="3-输出c基本数据类型的数据范围">3. 输出C++基本数据类型的数据范围</h2>
<p><strong>1. lmits.h</strong> <br>
头文件lmits.h定义了基本数据类型的范围,下面代码为limits.h中的部分代码,使用numeric_limits<数据类型>::min()和numeric_limits<数据类型>::max()可以得到对应数据类型的数据范围。</p>
<pre class="blockcode"><code class="hljs cpp"> <span class="hljs-keyword">template</span><<span class="hljs-keyword">typename</span> _Tp>
<span class="hljs-keyword">struct</span> numeric_limits : <span class="hljs-keyword">public</span> __numeric_limits_base
{
<span class="hljs-keyword">static |
|