C语言 整型是啥?就是整数吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言 整型是啥?就是整数吗?相关的知识,希望对你有一定的参考价值。

整型常量就是平时算术上写的没有小数点的整数,由阿拉伯数字1234567890组成,整型常量包括正数负数和0。常量是说从程序开始到结束,数值始终保持不变的量。
整型变量用变量名字表示。整型变量的数值从程序开始到结束可能变化,例如运算和输入。类似代数里的x,y,z.
所有编程语言里都有整型常量和整型变量,这是最常用最普通的类型。
参考技术A 整型是一个16位的数据类型,大小在负三万多到正三万多,满足大部分运算范围,赋的值太大会溢出 参考技术B C语言的实现一般由编译器和标准库开发者提供,而这部分开发者有很多,常见的编译器有微软的vc,GNU的gcc,Borland的TC,Intel也有自己的C编译器。各个提供者都有自己的想法,都可能会往语言特性中加入一些新的扩展实现,比如一些关键字,一些标准没有的标准库函数,或是一些标准库函数的返回值与其他的不一样等等。但他们都会遵循C语言标准,即是我们常听说的C99、C90/C89、C11等等。

一、C标准定义:

int类型是一个类型系列,在C语言中,基本的int 类型包括char,long,int,short,bool(_Bool关键字,C99)。C99标准中说明了,实现必须等于或大于的定义。
以下列出所有C标准中定义的类型(C99):

char: 机器上最小的地址单元。头文件中对应CHAR_BIT,8 bits;
signed char:与char长度相同,范围必须能承载至少[-127,+127],即8 bits大小,其中一位用作符号位;
unsigned char:与char长度相同,但无符号位,范围大小为[0, 2^CHAR_BIT - 1],8 bits;
short
short int
signed short
signed short int:以上四种为带符号的short类型,必须能承载至少[-32767, +32768]范围,也即是至少16bits长度。
unsigned short
unsigned short int: 同short, 但无符号,长度至少16bits。
int
signed
signed int:基本的int,必须能至少承载[-32767, +32767]范围,也即是说,至少16bits长度。
unsigned int
unsigned:同int,但无符号,长度至少16bits。
long
long int
signed long
signed long int:long 型的整数,必须能承载至少[-2147483647, +2147483647]范围,也就是至少32bits长度。(注:只有一个long)
unsigned long
unsigned long int:同long,但无符号位。
long long
long long int
signed long long

signed long long int:long long 类型,必须至少能承载[-9223372036854775807, +9223372036854775807],也就是至少64bits长度。
unsigned long long
unsigned long long int:同long long类型,没有符号位。

c++中,long long是啥类型?

long long不是所有编译器都使用的,说白了它就是一种能够表示范围更大的整数的类型
一般来说,整数常量是被当作 int 类型来存储的。如果我们使用的整数常量超出了 int 的表示范围,C 语言规定编译器自动使用 unsigned int 来处理这个常量。如果 unsigned 也不足以表示这个常量的话,编译器就会用 long。如果还表示不了的话,那就依次用 unsigned long,long long,unsigned long long。如果 unsigned long long 也表示不了,那么编译器就没辙了。注意:long long 和 unsigned long long 是 C99 特有的。
参考技术A long long本质上还是整型,只不过是一种超长的整型。

int型:32位整型,取值范围为-2^31 ~ (2^31 - 1) .
long:在32位系统是32位整型,取值范围为-2^31 ~ (2^31 - 1);在64位系统是64位整型,取值范围为-2^63 ~ (2^63 - 1)
long long:是64位的整型,取值范围为-2^63 ~ (2^63 - 1)。
参考技术B 转自百度百科:  
由string类类型和vector类类型定义的类型,用以保存任意string对象或vector对象的长度,标准库类型将size_type定义为unsigned类型
  string抽象意义是字符串, size()的抽象意义是字符串的尺寸, string::size_type抽象意义是尺寸单位类型
  string::size_type它在不同的机器上,长度是可以不同的,并非固定的长度。但只要你使用了这个类型,就使得你的程序适合这个机器。与实际机器匹配。
  eg
  string::size_type从本质上来说,是一个整型数。关键是由于机器的环境,它的长度有可能不同。 例如:我们在使用 string::find的函数的时候,它返回的类型就是 string::size_type类型。而当find找不到所要找的字符的时候,它返回的是 npos的值,这个值是与size_type相关的。假如,你是用 string s; int rc = s.find(.....); 然后判断,if ( rc == string::npos ) 这样在不同的机器平台上表现就不一样了。如果,你的平台的string::size_type的长度正好和int相匹配,那么这个判断会侥幸正确。但换成另外的平台,有可能 string::size_type的类型是64位长度的,那么判断就完全不正确了。 所以,正确的应该是: string::size_type rc = s.find(.....); 这个时候使用 if ( rc == string::npos )就会正确了。
  st.size()表示st中的字符数量,字符数量的统计是由 1 开始累计计算的,所以字符数量正好比字符串的下标索引数(由 0 开始累计计算)大 1 ,这里的index != st.size();的效果等同于index < st.size();本回答被提问者采纳
参考技术C 长长整型,其位长度大于等于long型。
在Win32平台和Win64平台中,其长度都是8Byte,相当于_int64。

以上是关于C语言 整型是啥?就是整数吗?的主要内容,如果未能解决你的问题,请参考以下文章

c语言中实型变量

long long 在c语言中是啥类型

整型除以浮点型是啥型?

c语言中啥算是实型数据?举例子!

C语言中的整形变量是啥?

integer在c语言中是啥意思