C语言int的取值范围

作者&投稿:脂静 (若有异议请与网页底部的电邮联系)
C语言int的取值范围~

其实c语言本身并没有对int
float
char的取值范围进行限制..你可以看看c
standard(c语言标准)..它上面是没有规定范围的..至于这个范围..他是给据不同的编译器来说的..我们知道c语言最早的编译器是borland公司的.其中影响最广的是tc2.0..至今还在使用者..由与再开发编译器的时候的硬件方面的限制..所以他就只好吧int的范围弄到-32768~32767
等等...要想知道他的范围,是必须得说明编译环境的..其实我们的很多老师再教学的过程当中,并没有把这点说的很详细...希望对你有所帮助

变量范围是-32,768 to 32,767 或者 -2,147,483,648
测试int变量的字节数:
#include #include int main() { printf("Storage size for int : %d
", sizeof(int)); return 0;}
结果:Storage size for int : 4
说明int型变量占用4个字节。
printf("int类型的最大值:%d
",INT_MAX); printf("int类型的最小值:%d
",IN。

C语言int的取值范围在32/64位系统中都是32位,范围为-2147483648~+2147483647,无符号情况下表示为0~4294967295。

C/C++编程语言中,int表示整型变量,是一种数据类型,用于定义一个整型变量,在不同编译环境有不同的大小,不同编译运行环境大小不同。

C的数据类型包括:整型、字符型、实型或浮点型(单精度和双精度)、枚举类型、数组类型、结构体类型、共用体类型、指针类型和空类型。

基本数据类型:

void:声明函数无返回值或无参数,声明无类型指针,显示丢弃运算结果。(C89标准新增)

char:字符型类型数据,属于整型数据的一种。(K&R时期引入)

int:整型数据,表示范围通常为编译器指定的内存字节长。(K&R时期引入)

float:单精度浮点型数据,属于浮点数据的一种。(K&R时期引入)

double:双精度浮点型数据,属于浮点数据的一种。(K&R时期引入)

_Bool:布尔型(C99标准新增)

_Complex:复数的基本类型(C99标准新增)

_Imaginary:虚数,与复数基本类型相似,没有实部的纯虚数(C99标准新增)

_Generic:提供重载的接口入口(C11标准新增)

扩展资料:

1989年,ANSI发布了第一个完整的C语言标准——ANSI X3.159—1989,简称“C89”,不过人们也习惯称其为“ANSI C”。

C89在1990年被国际标准组织ISO(International Standard Organization)一字不改地采纳,ISO官方给予的名称为:ISO/IEC 9899,所以ISO/IEC9899: 1990也通常被简称为“C90”。

1999年,在做了一些必要的修正和完善后,ISO发布了新的C语言标准,命名为ISO/IEC 9899:1999,简称“C99”。

在2011年12月8日,ISO又正式发布了新的标准,称为ISO/IEC9899: 2011,简称为“C11”。

参考资料:

百度百科-C语言

百度百科-int函数



16位的int取值范围分为无符号整型(unsigned int)和有符号整型(signed int)。

无符号整型是0000 0000 0000 0000 ~ 1111 1111 1111 1111,对应的十进制数为0到65535(即2^16-1)。

要理解有符号整型首先要了解两个规定:

  1. 符号位:对于有符号整型,存储单元中最高位代表符号位:0为正,1为负。

  2. 有符号整型的负数表示方法:补码(原码先取反再加1得到补码)。

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

举例:表示16位的-1。

1的原码:0000 0000 0000 0001;

取反(01互换):1111 1111 1111 1110;

加1:1111 1111 1111 1111。

得到-1的补码为1111 1111 1111 1111。

所以16位二进制有符号整型的-1就表示为1111 1111 1111 1111。

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

所以16位二进制数有符号整型的表示范围为:

正数,最高位为0,取值范围如下:

0000 0000 0000 0001 到 0111 1111 1111 1111

对应的十进制数为1到32767(2^15-1)。

0,全部位为0:

0000 0000 0000 0000。

负数,最高位为1,取值范围如下(以补码形式表示):

1111 1111 1111 1111 到 1000 0000 0000 0000 

对应的十进制数为-32768到-1,即-2^15到-1。

综上,16位二进制数有符号整型的取值范围是-32768到32767。

加深理解:题主问题中问-32768(-2^15)怎么来的,1000 0000 0000 0000在无符号整型中表示2^15怎么在有符号整型中就表示-2^15了呢?这里可以通过补码减1取反倒推出原码。

补码:1000 0000 0000 0000

减1:0111 1111 1111 1111

取反得到原码:1000 0000 0000 0000(2^15)

原码补码相同,只是个巧合。



C语言中int的取值范围为:-2147483648 ~ 2147483647

解释如下:
int类型在C语言中占4个字节,即32个二进制位。

当表示正数时,最高位为符号位(符号位为0),最大的正数是 0111 1111 1111 1111 1111 1111 1111 1111 即2^31 -1 = 2147483647
当表示负数时,最高位为符号位(符号位为1),最小的负数是 1000 0000 0000 0000 0000 0000 0000 0000 而在计算机中是以补码的形式存储的,C语言规定 1000 0000 0000 0000 0000 0000 0000 0000 的补码为-2147483648
所以C语言中int的取值范围为:-2147483648 ~ 2147483647

c语言int的取值范围在32/64位系统中都是32位,范围为-2147483648,+2147483647,无符号情况下表示为0,4294967295。c/c++编程语言中,int表示整型变量,是一种数据类型,用于定义一个整型变量,在不同编译环境有不同的大小,不同编译运行环境大小不同。c的数据类型包括:整型、字符型、实型或浮点型(单精度和双精度)、枚举类型、数组类型、结构体类型、共用体类型、指针类型和空类型。基本数据类型:void:声明函数无返回值或无参数,声明无类型指针,显示丢弃运算结果。(c89标准新增)。char:字符型类型数据,属于整型数据的一种。(k&r时期引入)。int:整型数据,表示范围通常为编译器指定的内存字节长。(k&r时期引入)。float:单精度浮点型数据,属于浮点数据的一种。(k&r时期引入)。double:双精度浮点型数据,属于浮点数据的一种。(k&r时期引入)。_bool:布尔型(c99标准新增)。_complex:复数的基本类型(c99标准新增)。_imaginary:虚数,与复数基本类型相似,没有实部的纯虚数(c99标准新增)。_generic:提供重载的接口入口(c11标准新增)。

负数是用补码保存的,所以1111 1111 1111 1111 按十六位有符号整数转换为十进制数字就是-1,是最大的负整数。

-32768的转换过程是:

先将32768(-32768的绝对值)按位取反,结果就是0111 1111 1111 1111

之后再将取反后的结果加1,就得了-32768的二进制存储:1000 0000 0000 0000

请自行查找 补码 的相关知识仔细研读吧!


java求解哪里错了?题目如下:
假设输入num=500,那么 random.nextInt(num+100-1)就会生成一个介于0到599直接的随机数,但是你又在这个随机数的基础上加上了100 random.nextInt(num+100-1)+100这个数取值范围就变成了 100到699了,而期望得到的数据范围是100到599 参考解法:import java.util.Random;import java.util.Scanner;...

c语言随机数函数是什么?
C语言随机函数主要用于实现一组随机数的生成。代码示例如下:include<stdio.h> include<stdlib.h> int main (){ int a;a=rand()%4;printf("%d\\n",a);return 0;} C预先生成一组随机数,每次调用随机函数时从指针所指向的位置开始取值,因此使用rand()重复运行程序产生的随机数都是相同的,可以...

...之间所有整数中各位上数字之和为x的整数,并输出其中x取值_百度...
这个问题不难, 一个循环+一个函数(计算每位数字之和)即可. 不过你的问题描述似乎不完整. 100~999, 每个数的数字之和的范围就是1~27. 你的x有什么具体的要求? 下面是一个范例, 根据需要自己修改吧...include <stdio.h>unsigned int GetDigitSum(unsigned int num);int main(int argc, char**...

C语言问题,题目:输入一个5位数以内的正整数,要求输出这是个几位数?每...
这么个题目能被你写出这么多代码来,我先看看有什么错,给你个简单点的,还多于5位 include<stdio.h> int main(){ int n, len=0;int a[11];scanf("%d",&n);while(n){ a[len]=n%10;len++;n\/=10;} printf("%d位数\\n每一位是:",len);for(n=len-1;n>=0;n--){ printf("...

百钱买百鸡的流程图
include <stdio.h>。void main()。{int mj,gj,xj,n=0;printf(" 百元买百鸡题求解方案\\n") ;printf(" ---\\n") ;printf("\\t母鸡\\t公鸡\\t小鸡\\n") ;for(mj=0;mj<=100;mj++)for(gj=0;gj<=100;gj++){ xj=100-mj-gj;if(xj*0.5+mj*3+gj*2==100)...

百钱买百鸡的C语言问题
不对,因为chicks\/3这个数是个整数,他取整数部分,也就是说在clicks不是3的整倍数时,结果是错的。或者把clicks定义成double也许会可以试试。看一下图吧,正确结果,能看清吗?意思是一样的,就是两个等式,钱数和个数相等,用哪个都可以。因为你要求的循环变量的增幅是定下来的,所以这样可以,...

php页码下拉框跳转不了
* $JumpType:定制跳转框,取值范围为select、text、none,其中select为下拉菜单显示框 * ,text文本输入框,none不定制任何跳转框,此处注意,当设置成text时,不能对页号进行加 * 密,此参数可省略,缺省状况下不显示任何跳转框,$IsDisNum:是否显示循环页号数,取值范 * 围为true,false,此参数可以省略,缺省状况下为f...

高分求free pascal的教程
Turbo Pascal支持五种预定义整型,它们是shortint(短整型)、 integer(整型)、 longint(长整型)、 byte(字节型)和 word(字类型),Turbo Pascal分别用相同的名字作为他们的标识符。每一种类型规定了相应的整数取值范围以及所占用的内存字节数。 类型 数值范围 占字节数 格式 shortint -128..128 1 带符号8位 in...

Slider control 控件使用
以下是常见的属性修改变量: * GetRange,SetRange 函数用于查询和设置滑动条的取值范围,默认为 0~100。 函数定义形式如下: void GetRange(int &nMin,int &nMax) const; void SetRange(int nMin,int nMax,BOOL bRedrGETaw=FALSE); * GetPos,SetPos 函数 用于查询和修改滑动条的当前值。函数定义方式如下: ...

从“跨平台就是一种谎言”说起C#和Java的区别
int x[] = { 0, 1, 2, 3 }; 但在C#中,只有第一行代码合法,[]不能放到变量名字之后。 13.与Java不同的是,C#允许为名称空间或者名称空间中的类指定别名: using TheConsole = System.Console; 14.在Java中,包的名字同时也是实际存在的实体,它决定了放置.java文件的目录结构。在C#中,物理的包和逻辑的...

霞浦县17325717812: C语言中.int 取值范围 -
卜启弗瑞: 首先声明:数学学得不好.所以不明白2的15次方是怎么来的,之后又为什么要减1.详解这个计算过程.谢谢!! int型占2个字节 即为16位 00000000 00000000 int 型是有符号型最大的整数是 01111111 11111111=10000000 00000000-1 转换成10进制``即为2^15-1 因为1后面有15个0``最小的数10000000 00000000 -2……16

霞浦县17325717812: c语言中int取值范围为16位指的是什么16位 -
卜启弗瑞: 1.c语言中int取值范围为16位指的是什么16位 计算机用二进制表示数值,最小单位就是位(bit),可以储存0或1,16位就是有16个储存0或1的位,其中左边第一位是符号位,0代表+ 、1代表-. 2.当中16位与-32768~+32767又有什么关系? 这里...

霞浦县17325717812: C中int型的取值范围是多少? -
卜启弗瑞: int 的 范围:-2147483648 ~ 2147483647 long 的 范围:-9223372036854775808 ~ 9223372036854775807public class test {public static void main(string[] args){system.out.println("int 的 范围:"+integer.min_value+" ~ "+integer.max_value);system.out.println("long 的 范围:"+long.min_value+" ~ "+long.max_value);} }

霞浦县17325717812: C语言中关键词 ”int 数的范围为 - 32 768~32 767”是什么意思? -
卜启弗瑞: 朋友你好!这句的意思是:int数的取值范围是负的32768到正的32767之间,若还有疑问可追问我,尽力帮你解答!

霞浦县17325717812: c语言整数变量类型的取值范围是什么意思?像short int的取值范围是 - 32768〜32767, -
卜启弗瑞: 取值范围和编译器有关 没记错的话最早的Turbo C里int才是-32768~32767的取值范围,现在因为机器牛x了一次能处理的位数就增多了使得原来的int变成了现在的short int 扯远了..下面说明这个范围是怎么来的 既然讨论计算机 就不能不提二进...

霞浦县17325717812: C语言中的int取值范围是 - 2的23次方至2的23次方减1,为什么那负数,不用与正数一样减1. -
卜启弗瑞: 32位可以表示2的32次方减一个数 ,包括0;因为0不是负数也不是正数,所以剩下2的32次方减1个数,所以会造成负数多一个, int 取值(-2^31~2^31-1)

霞浦县17325717812: 在C中int的取值范围为什么是这样的 -
卜启弗瑞: 在C中,int是一个有符号的整数,其最高位表示符号.0为+,1为-. 在计算机中,通常采用补码来表示一个二进制的数. 根据补码的原则,正数的补码为其本身,负数的补码为其对应的二进制代码去反加1. 故正数最大值(111 1111 1111 111...

霞浦县17325717812: C语言中,unsigned int型数据的取值范围是??? -
卜启弗瑞: 0到65535. 举例: unsigned a; a=5; 或:unsigned int a; a=5; 16位系统中一个int能存储的数据的范围为-32768~32767,而unsigned int能存储的数据范围则是0~65535,在计算机中,整数是以补码形式存放的. 系统使用无符号数只表示大...

霞浦县17325717812: C++中int的范围是多少? -
卜启弗瑞: 哎,老大们居然没有一个说完整的,或者就是有笔误的.大体上套用贝式弧现的答案吧,纠正一下他的几处错误:在标准C++中的int的字节长度小于long大于short就行了,多数平台上int占4个字节(32位,不是16位!),所以能表示的范围就是...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网