概述
整型默认标识符为n,一般是指short,int,long(long)和char四类。
单个字符char型也是划分为整型范围的,字符型char默认标识符是ch。
值得注意的也就是整型数的除法运算是 舍余数运算,商结果是个(经过四舍五入后的)整型数。其他的就是注意各个整型所能够表示的数值大小范围,
避免发生数值横断溢出。
以下讨论的都是十进制数:
1、short型
short短整型常量直接写,如1、2、3、4……short内存宽度至少16位(bit),不过一般系统会设置为16bits,故数值范围2^16,分正负两半之后2^15,约3.2*10^4,故可
表示数值(2^15)*(-1) ~(2^15)-1,正数最大值比2^15小1是因为把位置分给0了。
短整型的格式控制符:
scanf输入用 %hd,%hx,%ho,%hu都行,四选一;
printf输出用 %hd,%hx,%ho,%hu,%d都行,五选一;
scanf不能用%d否则会被警告,格式控制符出错也可能导致数据断位溢出;具体选择
根据编译器情况选择,不过一般 %hd通用。
头文件<limits.h>或<climits>中:
SHRT_MAX +32767 short类型的最大值
SHRT_MIN -32768 short类型的最小值
USHRT_MAX +65535U unsigned short类型的最大值
codeblocks16.1相关源代码如下:
// Maximum and minimum values for shorts.
#define SHRT_MAX 32767
#define SHRT_MIN (-SHRT_MAX-1)
#define USHRT_MAX 0xffff
2、int型
int整型常量直接写,如1、2、3、4……int内存宽度至少与short一样长,一般
系统会设之为32bits,故数值范围是2^32,分正负两半之后2^31,约2.1*10^9,故可
表示数值(2^31)*-1 ~(2^31)-1,0分到了正数一边了。。
scanf输入和printf输出int型的格式控制符都是 %d。
INT_MAX +2147483647
INT_MIN -2147483648
UINT_MAX +4294967295
codeblocks16.1相关源代码如下:
// Maximum and minimum values for ints.
#define INT_MAX 2147483647
#define INT_MIN (-INT_MAX-1)
#define UINT_MAX 0xffffffff
3、long型
long长整型常量以字母l或L结尾,如123456789L,不过字母可以省略。
类似的还有,无符号int型数值常量以u或U结尾,long是UL,long long是ULL。
long内存宽度至少为32bits,且至少与int一样长,故其数值范围同int,为2^32。
scanf和printf的格式控制符都是 %ld。格式控制符用的是小写l不是大写L。
LONG_MAX +2147483647L
LONG_MIN -2147483648L
ULONG_MAX +4294967295L
(数字后缀字母用大写L是基于 对小写l和数字1相似易混的考虑)
codeblocks16.1相关源代码如下:
(无符号unsigned long long 以 ULL结尾)
// Maximum and minimum values for longs and unsigned longs.
// TODO: This is not correct for Alphas, which have 64 bit longs.
#define LONG_MAX 2147483647L
#define LONG_MIN (-LONG_MAX-1)
#define ULONG_MAX 0xffffffffUL
// ISO C9x macro names
#define LLONG_MAX 9223372036854775807LL
#define LLONG_MIN (-LLONG_MAX - 1)
#define ULLONG_MAX (2ULL * LLONG_MAX + 1)
4、long long 型
long long超长整型常量以字母ll或LL结尾,如123456789123456789LL,不过后缀字母也可以省略。
long long内存宽度至少为64bits,且至少与long一样长,故其数值范围一般为2^64。
scanf和printf的格式控制符都是 %lld,是小写l不是大写L。
或者有的编译器都是用%I64d,是大写I不是小写i。
INT_MAX + 9223372036854775807LL 2^63 - 1 约为9.2*10^18
INT_MIN - 9223372036854775808LL (-1)*(2^63)
UINTMAX +18446744073709551616LL 2^64 约为1.8*10^19
codeblocks16.1相关源代码如下:
// The GNU C compiler also allows 'long long int'
#define LONG_LONG_MAX 9223372036854775807LL
#define LONG_LONG_MIN (-LONG_LONG_MAX-1)
#define ULONG_LONG_MAX (2ULL * LONG_LONG_MAX + 1)
/* MSVC compatibility */
#define _I64_MIN LONG_LONG_MIN
#define _I64_MAX LONG_LONG_MAX
#define _UI64_MAX ULONG_LONG_MAX
以下截图是《C++ Primer Plus 第六版 中文版》的相关信息:
以下只是小小的测试,就是抛砖引玉:
#include <iostream>
#include <cstdio>
#include <climits>
using namespace std;
int main(){
short n=1;
printf("n = %hdn",n);
n = SHRT_MAX;
printf("n = %hdn",n);
n = SHRT_MIN;
printf("n = %hdn",n);
scanf("%hd",&n);
printf("n = %hdn",n);
return 0;
}
最后
以上就是大气狗为你收集整理的整型的全部内容,希望文章能够帮你解决整型所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复