请输入您要查询的百科知识:

 

词条 整型
释义

一、面包烘焙

整型:将第二次发酵成熟的面团做成一定形状的面包坯的过程。

二、计算机基础与计算机语言

主词条:整型量

【以下使用PHP语言为例】

1、定义:一个 integer 是集合 Z = {..., -2, -1, 0, 1, 2, ...} 中的一个数。

参见:任意长度整数 / GMP,浮点数 和 任意精度数学库 / BCMath。

2、语法:

整型值可以用十进制,十六进制或八进制符号指定,前面可以加上可选的符号(- 或者 +)。

如果用八进制符号,数字前必须加上 0(零),用十六进制符号数字前必须加上 0x。

例子 6-1. 整数文字表达:

<?php

$a = 1234; # 十进制数

$a = -123; # 一个负数

$a = 0123; # 八进制数(等于十进制的 83)

$a = 0x1A; # 十六进制数(等于十进制的 26)

?>

在字面上,整型变量正式的结构可以为:

<?php

decimal : [1-9][0-9]*

| 0

hexadecimal : 0[xX][0-9a-fA-F]+

octal : 0[0-7]+

integer : [+-]?decimal

| [+-]?hexadecimal

| [+-]?octal

?>

----------------------------------------------------------------------------------------------------------

注意:整型数的字长和平台有关,尽管通常最大值是大约二十亿(32 位有符号)。

另:PHP 不支持无符号整数。

3、整数溢出:

如果你指定一个数超出了 integer 的范围,将会被解释为 float。同样如果你执行的运算结果超出了 integer 范围,也会返回 float。

<?php

$large_number = 2147483647;

var_dump($large_number);

// 输出为:int(2147483647)

$large_number = 2147483648;

var_dump($large_number);

// 输出为:float(2147483648)

// 同样也适用于十六进制表示的整数:

var_dump( 0x80000000 );

// 输出为:float(2147483648)

$million = 1000000;

$large_number = 50000 * $million;

var_dump($large_number);

// 输出为:float(50000000000)

?>

PHP 中没有整除的运算符。1/2 产生出浮点数 0.5。您可以总是舍弃小数部分,或者使用 round() 函数。

<?php

var_dump(25/7); // float(3.5714285714286)

var_dump((int) (25/7)); // int(3)

var_dump(round(25/7)); // float(4)

?>

4、转换为整形:

要明示地将一个值转换为 integer,用 (int) 或 (integer) 强制转换。不过大多数情况下都不需要强制转换,因为当运算符,函数或流程控制需要一个 integer 参数时,值会自动转换。您还可以通过函数 intval() 来将一个值转换成整型。

参见:类型戏法。

4.1 从布尔值转换:

FALSE 将产生出0(零),TRUE 将产生出1(壹)。

4.2 从浮点数转换:

当从浮点数转换成整数时,数字将被取整(丢弃小数位)。

注意:如果浮点数超出了整数范围(通常为 +/- 2.15e+9 = 2^31),则结果不确定,因为没有足够的精度使浮点数给出一个确切的整数结果。在此情况下没有警告,甚至没有任何通知!

(译者注:)在 Linux 下返回结果是最小负数(-2147483648),而在 Windows 下返回结果是零(0)。

【以下以C/C++语言为例,陈述一下整型的知识】:

a.C/C++对整型长度的规定是为了执行效率,将int定义为机器字长可以取得最大的执行速度;

b.C/C++中整型包括:int,char和enum,C++中还包含bool类型,C99中bool是一个宏,实际为_Bool;

c.C和C++对enum的规定有所不同,这里不描述;

d.修饰整型正负的有signed和unsigned,对于int默认为signed;

e.修饰 int 大小的有short和long,部分编译器还扩展了一些更长的整型,比如long long和__int64, C99中增加了long long和unsigned long long;

f.int 的长度与机器字长相同,16位的编译器上int长16位,32位的编译器上int长32位;

g.short int的长度小于等于int 的长度,注意它们可能长度相等,这取决于编译器;

h.long int 的长度大于等于int 的长度,注意它们可能长度相等,这取决于编译器;

i.char 的长度应当可以包容得下一个字符,大部分系统中就是一个字节,而有的系统中可能是4个字节,因为这些系统中一个字符需要四个字节来描述;

j.char 的正负取决于编译器,而编译器的决定取决于操作系统,在不同的编译器中char可能等同于signed char,也可能等同于unsigned char;

总结:

a. 出于效率考虑,应该尽量使用int和unsigned int;

b. 当需要指定容量的整型时,不应该直接使用short、int、long等,因为在不同的编译器上它们的容量不相同。此时应该定义它们相应的宏或类型,比如在VC++6.0中,可以如下定义:

[Copy to clipboard]CODE:

typedef unsigned char UBYTE;

typedef signed char SBYTE;

typedef unsigned short int UWORD;

typedef signed short int SWORD;

typedef unsigned int UDWORD;

typedef signed int SDWORD;

typedef unsigned __int64 UQWORD;

typedef signed __int64 SQWORD;

然后在代码中使用UBYTE、SBYTE、UWORD等,这样当代码移植的时候只需要修改相应的类型即可。

定义自己的类型虽然在代码移植的时候只需要修改一处即可,但仍然属于源代码级别的修改,所以 C++ 2.0 中将这些类型定义在模板中,可以做到代码移植时无需修改代码。

c. 在定义char时,一定要加上signed或unsigned,因为它的正负在不同的编译器上并不相同。

d. 不要想当然的以为char是1字节长,因为它的长度在不同的编译器上并不相同。

随便看

 

百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。

 

Copyright © 2004-2023 Cnenc.net All Rights Reserved
更新时间:2025/2/5 2:23:10