C 语言提供了很多整数类型(整型),这些整型的区别在于它们的取值范围的大小,以及是否可以为负。int 是整型之一,一般被称为整型。以后,在不产生歧义的情况下,我们把整数类型和 int 都称为整型。下面我们来看看c语言int的用法。 1 整型 int int 代表有符号整数,也就是说,用 int 声明的变量可以是正数,可以是负数,也可以是零,但是只能是整数。标准规定 int 的最小取值范围是 -32767 到 32767。int 的取值范围因机器而异,但是一定要大于或者等于 -32767 到 32767。一般来说,int 占用一个字的内存空间。因此,字长为 16 位(Bit)的旧式 IBM 兼容机使用 16 位来储存整型 int ,取值范围是 -32768 到 32767 。目前的个人电脑一般都是 32 位字长的,这些电脑中,int 一般也是 32 位的,取值范围是 -2147483648 到 2147483647。对于使用 64 位 CPU 的电脑,使用更多位储存 int 也是很自然的事情,取值范围当然也会更大。 2 声明 int 类型的变量 正如我们在以前的教程里看到的那样,int 用于声明整型变量:以 int 打头,后面跟着变量的名字,最后以分号(;)结束。例如: int erns; / 声明一个变量 / / 注意:一定要用逗号(,),不能用分号(;)/ int hogs, cows, goats; / 声明三个变量 / 以上声明创建了变量,但是没有给它们提供“值(value)”。在前面的教程中,我们已经用了两种方法使变量获得“值”。一种是赋值:cows = 500; 。另一种是使用 scanf 函数:scanf( "%d", &goats ); 。下面我们来学习第三种方法。 3 初始化变量 初始化变量是指给变量赋初值:声明变量的时候,在变量名的后面写上等号(=),然后写下你希望赋予变量的“值”。例如: int hogs = 21; int cows = 32, goats = 14; int dogs, cats = 94; 以上声明创建了变量,并且为这些变量分配了空间,同时也赋了初值。注意,第三行中只有 cats 被初始化为 94,而 dogs 没有被初始化!如下图: 4 int 常量 上面的例子中,21、32、14,以及 94 都是整数常量。C 语言中,整数常量的默认类型是 int。如果整数常量的大小超过了 int 的取值范围,那么编译器将会把这个整数常量当作 long int 类型来处理,这个我们后面还会讲到。21、32、14 和 94 都在 int 的取值范围之内,因此它们都是 int 常量。 5 输出 int 型数据 我们可以用 printf 函数来输出 int 型数据。正如我们在前面的教程中看到的那样,占位符 %d 代表输出的是 int 型数据,它告诉 printf 函数在什么地方输出相应的 int 型数据。%d 也被称为格式限定符(format specifier),因为它指定了 printf 函数应该使用什么形式来输出数据。printf 函数的第一个参数只能是字符串,这个字符串被称为格式串(format string)。格式串中有多少个 %d,我们就应该相应地提供多少个 int 型参数给 printf 函数。int 型参数可以是 int 型变量,int 型常量,以及结果为 int 型的表达式等。例如: int year = 2005; / year 是 int 型变量 / printf( "Today is %d-%d-%d ", year, 9, 20 + 9 ); / 20 + 9 是加法表达式 / 保证格式限定符的数目和参数数目一致是我们的责任,编译器不负责捕捉这种错误!例如: #include <stdioh> int main(void) { int ten = 10, two = 2; printf("%d minus %d is %d ", ten ); / 少写了两个参数 / getchar(); / 等待用户按回车 / return 0; } 这个程序可以通过编译,但是运行结果将会出乎意料,因为我们少写了两个参数。标准规定,如果格式限定符的数目大于参数数目,则 printf 函数的行为是未定义的;如果参数数目大于格式限定符的数目,则多余的参数会被忽略。 6 八进制(octal)和十六进制(hexadecimal) C 语言中,整数常量默认是十进制(decimal)整数。通过在整数常量前面加上特定的前缀,可以把它设定为八进制或者十六进制整数。前缀 0x 或者 0X 把整数常量设定为十六进制整数。注意,是数字 0 ,而不是字母 O ,别搞错了哦!例如:十进制的 16 用十六进制来表示是 0x10 或者 0X10 。在整数常量前面加上前缀 0 ,表示它是八进制整数。注意,是数字 0 ,而不是字母 O 。例如:十进制的 16 表示为八进制就是 020 。 7 以八进制或者十六进制形式输出数据 使用格式限定符 %o 可以以八进制的形式输出整数。注意,是小写字母 o ,不是数字 0 。使用 %x 或者 %X 可以以十六进制的形式输出整数。小写 x 表示输出使用小写字母,大写 X 表示输出使用大写字母。使用 %#o,%#x 或者 %#X,得到的输出将包括前缀 0,0x 或者 0X。例如: #include <stdioh> int main(void) { int x = 200; printf("dec = %d; octal = %o; hex = %x; HEX = %X ", x, x, x, x); printf("dec = %d; octal = %#o; hex = %#x; HEX = %#X ", x, x, x, x); getchar(); return 0; } 这个程序的输出是: dec = 200; octal = 310; hex = c8; HEX = C8 dec = 200; octal = 0310; hex = 0xc8; HEX = 0XC8 1 其它整数类型 int 是 C 语言的基本整数类型,可以满足我们处理一般数据的需求。C 语言还提供了四个可以修饰 int 的关键字:short、long、signed,以及 unsigned。利用这四个关键字,C 语言标准定义了以下整数类型: 1) short int(可简写为 short),和 int 一样,也是有符号整数 2) long int(简写:long),有符号整数 3) long long int(简写:long long),C99 标准添加的类型, 有符号整数 4) unsigned int(简写:unsigned),无符号整数,不能表示负数 5) unsigned long int(简写:unsigned long),无符号整数, 不能表示负数 6) unsigned short int(简写:unsigned short),无符号整数, 不能表示负数 7) unsigned long long int(简写:unsigned long long), C99 添加的类型,无符号整数 8) 所有没有标明 unsigned 的整数类型默认都是有符号整数。 在这些整数类型前面加上 signed 可以使读者更清楚地知道 这些是有符号整数,尽管有没有 signed 都表示有符号整数。 例如:signed int 等同于 int 。 一般我们把 short 称为短整型,把 long 称为长整型,把 long long 称为超长整型,把 int 称为整型。unsigned 打头的那些整数类型统称为无符号整型。例如:我们称 unsigned short 为无符号短整型。以此类推。 2 声明方式 这些整数类型的声明方式与 int 类型的声明方式一样。例如: long int estine; long johns; short int erns; short ribs; unsigned int s_count; unsigned players; unsigned long headcount; unsigned short yesvotes; long long ago; / C99 特有 / unsigned long long ego; / C99 特有 / 如果您的编译器不支持 C99 标准,那就不能使用 long long 和 unsigned long long。 3 取值范围(表示范围) 标准也规定了这些整数类型的最小取值范围。short 的最小表示范围和 int 一样,都是 -32767 到 32767 。也就是 -(2^15 - 1)到(2^15 - 1)。其中,2^15表示 2 的 15 次方。类似地,2 的 20 次方记作 2^20 ,以此类推。注意:C 语言中 2^15 并不表示 2 的 15 次方,为了书写方便,我们姑且这么表示。long 的最小取值范围是 -2147483647 到 2147483647 。也就是 -(2^31 - 1) 到 (2^31 - 1) 。unsigned short的最小表示范围和unsigned int 一样,都是 0 到 65535(2^16 - 1)。unsigned long 的最小取值范围是 0 到 4294967295(2^32 - 1)。long long的最小取值范围是 -9223372036854775807(-(2^63 - 1))到 9223372036854775807(2^63 - 1);unsigned long long 是 0 到 18446744073709551615(2^64 - 1)。 标准规定,int 的表示范围不能小于 short 的表示范围,long 的表示范围不能小于 int 的表示范围。这就是说 short 型变量占用的空间可能比 int 型变量少,而 long 型变量占用的空间可能比 int 型变量多。16 位(bit)的计算机中,int 和 short 一般都是 16 位,而 long 是 32位;32位的计算机中,short一般是 16 位,而long和int是 32位。TC2(16位的编译器)中,int是16位的;而 Dev-C++(32 位的编译器)中,int 是 32 位的。 使用 unsigned int 声明的变量只能表示非负整数(0 和正整数)。如果 int 是 16 位的话,那么 unsigned int 的表示范围是 0 到 65535(2^16 - 1)。这是因为 unsigned 不需要符号位,可以把 16 个位全都用于表示整数。而 int 需要一个位作为符号位,用于表示正负,只有 15 个位用于表示整数。 目前,long long 一般 64 位,long 是 32 位,short 是 16 位,而 int 或者 16 位,或者 32 位。具体某个编译器到底使用多少位来表示这些类型,我们可以用运算符 sizeof 来获取。例如: printf( "%lu ", (unsigned long)sizeof(int) 8 ); / 输出 int 的位数 / printf( "%zu ", sizeof(short) 8 ); / 输出 short 的位数 / sizeof 运算符返回其 *** 作数占用空间的大小,以字节(Byte)为单位。注意,C 定义字节的大小为 char 类型的大小。char 通常是 8 位(bit)的,当然也可以更大。这里我们假设 char 是 8 位的。 char 类型详细介绍 sizeof 的用法我们以后会讲到,现在只要有个印象就好了。第二句中的 %zu 是 C99 特有的,如果您的编译器不支持 C99(准确地说,应该是如果您的编译器使用的库函数不支持 C99),运行结果将会出错。 4 整数类型的选择 如果您要处理的只是非负整数,那么应该优先使用 unsigned 打头的那些整数类型。如果您要处理的整数超出了 int 所能表示的范围,并且您的编译器中,long 的表示范围比 int 大,那就使用 long。不过,若非必要,尽量不要用 long,因为它可能会降低程序运行效率。有一点要注意:如果您的编译器中,long 和 int 都是 32 位的,并且您需要使用 32 位整数,那么应该用 long,而不要用 int。只有这样,我们的程序才可以安全地移植到 16 位的计算机,因为 16 位的计算机中,int 一般也是 16 位的。类似地,如果您需要使用 64 位整数,那就用 long long。如果 int 是 32 位的话,那么使用 short 可以节省空间,不过您得确保您要处理的整数不会超出 short 的表示范围。这种“节省”对内存大的计算机来说,是没什么意义的。 5 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 特有的。例如:如果 int 是 16 位的话,它就表示不了常量 1000000。编译器会使用 long 来处理这个常量,因为 unsigned int 也表示不了 1000000 。 同样,十六进制和八进制整数常量通常也是被作为 int 来处理。但是,当我们使用的常量超出了 int 的表示范围后,编译器会依次使用unsigned int,long,unsigned long,long long 和 unsigned long long。直到所使用的类型足以表示那个常量为止。 有时,我们使用的是较小的常量,但是我们希望这个常量被当作 long 来处理,这就需要在这个常量后面加上后缀 l(小写字母 l)或者 L(大写字母 L)。我们应该避免使用 l ,因为 l 容易和数字 1 混淆。例如:整数常量 7 是被作为 int 来处理的,但整数常量 7L(或者 7l)是被作为 long 来处理的。类似地,在整数常量后面加上后缀 ll 或者 LL ,这个常量就会被当作 long long 来处理。例如:3LL 。如果想使用无符号整数常量的话,还要配合使用后缀 u 或者 U 。例如:2u,3U,4Lu,5ul,6LU,7LLU,8Ull,9uLL 。 这些后缀也可以用于十六进制和八进制整数常量。例如:020L,010LL,0x30uL,0x40ull 。 1 输出各种整数类型的变量 输出不同类型的整数,需要使用不用的格式限定符。输出 unsigned int 类型的整数,要用 %u 。输出 long ,要用 %ld;如果要以十六进制或者八进制形式输出,那就用 %lx(或者%lX)或者 %lo。注意:虽然整数常量的后缀使用大写或者小写英文字母都没关系,但是它们格式限定符必须使用小写!如果我们要输出 short 类型的整数,可以在 %d 中间加上前缀 h,也就是%hd;同理,%ho 和 %hx(或者 %hX )分别表示以八进制或十六进制形式输出。前缀 h 和 l 可以和 u 组合,表示输出无符号整数。例如:%lu 表示输出 unsigned long 类型的整数;%hu 表示输出unsigned short类型的整数。如果您的编译器支持C99,可以使用 %lld 和 %llu 分别表示输出 long long 和 unsigned long long 。下面我们来看一个输出各种类型整数的程序: #include <stdioh> int main(void) { unsigned int un = 3000000000; / 我使用的编译器 int 是 32 位的 / short end = 200; / 而 short 是 16 位的 / long big = 65537; printf("un = %u and not %d ", un, un); printf("end = %hd and %d ", end, end); printf("big = %ld and not %hd ", big, big); printf("Press ENTER to quit"); getchar(); return 0; } 使用 Dev-C++ 编译运行这个程序输出结果如下: un = 3000000000 and not -1294967296 end = 200 and 200 big = 65537 and not 1 Press ENTER to quit 这个程序表明,错误使用格式限定符会导致意想不到的输出。首先,错误使用 %d 来做无符号整型变量 un 的格式限定符,导致输出的是负数。这是因为我的计算机使用相同的二进制形式来表示 3000000000 和 -129496296 ,而计算机只认识二进制。所以,如果我们使用 %u 告诉 printf 输出无符号整数,输出的就是 3000000000;如果我们误用了 %d,那么输出的就是一个负数。不过,如果我们把代码中的 3000000000 改成 96 的话,输出就不会出现异常。因为 96 没有超出 int 的表示范围。 然后,对于第二个 printf,无论我们使用 %hd 还是 %d,输出的结果都是一样的。这是因为 C 语言标准规定,当 short 类型值传递给函数时,要自动转化成 int 类型值。之所以转化成 int,是因为 int 被设计为计算机处理效率最高的整数类型。所以,对于 short 和 int 大小不同的计算机来说,把变量 end 转化成 int 类型再传递给函数,速度更快。如此说来,h 好像没有存在意义。其实不然。我们可以用 %hd 来看看较大的整数类型被截断成 short 类型的时候会是什么样的。 而第三个 printf,由于误用 %hd,导致输出是 1。这是因为,如果 long 是 32 位的话,65537 的二进制形式便是 0000 0000 0000 0001 0000 0000 0000 0001,而 %hd 命令 printf 输出 short 类型的值,从而导致 printf 只处理 16 位数据(假设 short 是 16 位的),最终导致输出 1。 在前面的教程里,我们说过,保证格式限定符的数目和参数数目一致是我们的责任。同样,保证格式限定符的类型和参数类型一致也是我们的责任!正如上面所说的那样,错误使用格式限定符会导致意想不到的输出!标准规定,如果任意参数和与其对应的格式限定符类型不一致,则 printf 的行为是未定义的;如果格式限定符本身就是非法的,则 printf 的行为也是未定义的。 2 整数溢出 首先请看以下程序: #include <stdioh> int main(void) { / 32 位 int 表示范围的上限和下限 / int i = 2147483647, j = -2147483648; unsigned int k = 4294967295, l = 0; printf("%d %d %d %d ", i, i+1, j, j-1); printf("%u %u %u %u %u ", k, k+1, k+2, l, l-1); printf("Press ENTER to quit"); getchar(); return 0; } 使用 Dev-C++ 编译运行这个程序输出结果如下: 2147483647 -2147483648 -2147483648 2147483647 4294967295 0 1 0 4294967295 Press ENTER to quit 本例中,i+1 是负数,j-1 是正数,k+1 是 0,l-1 是 4294967295 。这是因为加减运算过后,它们的值超出了它们对应的那种整数类型的表示范围,我们把这种现象称为溢出。 unsigned int 型变量的值如果超过了上限,就会返回 0,然后从 0 开始增大。如果低于下限,那么就会到达 unsigned 型的上限,然后从上限开始减小。就好像一个人绕着跑道跑步一样,绕了一圈,又返回出发点。一般,int 型变量溢出的话,会变成负数,或者正数。 对于 unsigned 类型的整数,它们溢出时的情况一定和上面描述的一样,这是标准规定的。但是标准并没有规定有符号整数溢出时会出现什么情况。这里描述的有符号整数溢出时出现的情况是最常见的,但是在别的计算机,使用别的编译器,也可能出现不同的情况。
int是c语言基本数据类型之一,是整型的意思。C语言中有多种不同的数据类型,分为四大类型:基本类型、构造类型、指针类型、空类型。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性,以一个标准规格写出的C语言程序可在包括类似嵌入式处理器以及超级计算机等作业平台的许多计算机平台上进行编译。C语言一般只比汇编语言代码生成的目标程序效率低10%-20%。因此C语言可以编写系统软件。
相关信息
C语言是一种结构化语言,它有着清晰的层次,可按照模块的方式对程序进行编写,十分有利于程序的调试,且c语言的处理和表现能力都非常的强大,依靠非常全面的运算符和多样的数据类型,可以轻易完成各种数据结构的构建,通过指针类型更可对内存直接寻址以及对硬件进行直接 *** 作。
C语言包含的各种控制语句仅有9种,关键字也只有32个,程序的编写要求不严格且以小写字母为主,对许多不必要的部分进行了精简。实际上,语句构成与硬件有关联的较少,且C语言本身不提供与硬件相关的输入输出、文件管理等功能。
举个例子:
int
x[5];
这个的意思就是你申请了一个数组(和人排坐座位是一样的,就是五个位子么,第一个位子叫做x[0],第二个叫做x[1]……最后一个位子叫做x[4],注意没有x[5],这个就是这么定义的,从0开始,没有为什么!)
所以[
]
里面是放数字的,表示有几个“位子”。
应用方法:x[0]=3;
就是第‘0’这个位子,做了一个数字叫做3的”人“,以后使用x[0]时候就是在使用数字“3”。更改方法,重新赋值
x[0]=4;那么……这个地方就做了数字4这个人了。
注意,因为你开头是
int
所以这里只能填入“整数”!
不懂可以继续问,希望能帮助你~
c语言中,int最大值是2147483647。
c语言中,int、long int 、unsigend long int都是4个字节,其可以用sizeof()函数得出。占用4个字节的整数其最大能表示数的个数是2^32(4个字节共32位)。
int、long int都是带符号整数类型,因此它们能表示的整数范围为-2147483648~2147483647,也就是-2^31~2^31-1。unsigend long int是无符号整数类型,能表示的整数范围是0~4294967295,即0~2^32-1。
同理,short int是2个字节的带符号整数类型,能表示的整数范围是0~65535,即0~2^16-1。
扩展资料:
C语言中,float数据类型的表示范围:
float为单精度浮点数,占4字节,其数值范围为34E-38 ~34E+38或者-(34E-38 ~34E+38)。float的指数位有8位,尾数位有23位,符号位1位。于是,float的指数范围为-127~+128,按补码的形式来划分。
参考资料来源:百度百科-INT (数据类型)
#include
void
print_table()
{
float
fahr,celsius;
int
lower,upper,step;
lower
=
0;
upper
=
300;
step
=
20;
celsius=lower;
fahr
=
lower;
while
(fahr
<=
upper){
celsius
=
5
(fahr-32)
/
9;
printf("%d\t%d\n",
fahr
,
celsius);
fahr
=
fahr
+
step;
}
}
}
int就是定义整形变量啊
用tc运行应该可以
vc++老的语言不能识别
现在大学里学的c语言不少语句过时了,所以在vc
vs上都用不了
是定义整数数据的标识符
如 int a;
意思是定义a为一个整数
C - 计算机语言 :
1、C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
2、尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
3、二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言订定了一套完整的国际标准语法,称为ANSI C,作为C语言最初的标准。
看了你的追问这么多我知道他们回答的不是楼主想要的。
先引来这段代码:
char
//这是字符指针类型(所谓类型也就是附加char的一种),只有在定义时才这样写,就像你写int
一样。
问题:什么是指针?有何作用?在c语言在存的价值及意义是什么?
答:指针在计算机硬件中是不存在这个名字,而在计算机中只有地址。还是很混,为什么要区分开地址和指针搞的人不明白呢?因为计算机处理数据时候他都是按地址找到相应位置来处理的,就像你想去北京旅游你肯定想要找到地址才能去。比如你定义一个变量int
a=99;
编译器会知道是int型,分配2个字节大小来存储,在内存在的编号如是2000;
当你用printf("%d",a);
这时计算机的内存寄存器通过寻址找到2000这个地址,然后读取该地址上保存的数据99。所以在内存在内存中每个数据不是乱放起的而是通过编号统一管理的。
那指针呢,他与地址有何区别?我们所说的指针是针对程序中才能说这一词。为什呢?因为指针是专用来保存地址的变量即指针变量(在c语言中所有的数据内存地址数都是2个字节大小,一信可用sizeof()测一下,如sizeof(可写任何指针变量)
都是2)
。用指针变量访问一个数据就需要间接访问,而变量则可直接仿问。注意:什么是指针,什么是指针变量?指针即地址(程序中可这样说),因为上面所说了访问一个变量就是先找到该变量的地址。而指针是用来专用保存地址的,如:int
a=99;
int
p=&a;
所以你访问p的值也就是访问a的地址或是通过p保存的址值即a的地址来访问。
注意:在定义之后的p,p是有区别的。输出p即输出p的地址,输出p即输出该地址中的内容即值
指针变量就是专用存放地址的变量叫指针变量。因为计算机内存处理数据最终是物理电路是 *** 作的,所以终归转化为地址,因为每条内存都有相应的编号,这符合人们的思想用指针地址处理运行程序速度快、使用灵活。
char
//定义所有数据类型只要是指针类型都是2个字节,那么前面的char,int那些关键字有何用呢?因为类型匹配,每个数据占用的内存空间大小不一的。
a
//a
表示读取该a的地址的值是多少
charp
p=&c分别都是什么意思
//
你这段代码是错的。p是表示读取值,而p是表示读取地址,要区分明白。&c以"&"开头的表示该变量的地址,&c表示c的地址。你将一个地址赋给一个p即用来存值的变量显然不符合。
所以应该是
p=c;
//值与值赋
在初始定义时可写成
char
p=4;
//这也值与值的赋
p=&c;
//地址与地址型赋
在初始定义时可写成
char
p=&c;
//这也行。
若还不明白本人劝你没必要追究到底,等你学到后面会越学越明白的,计算机原理,编译原理等等。
还有问题请回复^
_
^
以上就是关于c语言int的用法全部的内容,包括:c语言int的用法、在C语言中的int 是什么意思、c语言里的int是什么意思等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)