我是靠谱客的博主 大气狗,最近开发中收集的这篇文章主要介绍整型,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

整型默认标识符为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;
}

 

 

 

 

 

 

 

最后

以上就是大气狗为你收集整理的整型的全部内容,希望文章能够帮你解决整型所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部