C语言中关于 int 型的问题。
#include<stdio.h>voidmain(){inta,b;a=32767;b=a+1;printf("%d,%d\n",a,b);}这个程序运行后,为什么结果...
#include<stdio.h>void main()
{
int a,b;
a=32767;
b=a+1;
printf("%d,%d\n",a,b);}
这个程序运行后,为什么结果是
呢?
书中说 int的取值范围是 -32768~32767
为什么b的结果是错误的呢? 展开
{
int a,b;
a=32767;
b=a+1;
printf("%d,%d\n",a,b);}
这个程序运行后,为什么结果是
呢?
书中说 int的取值范围是 -32768~32767
为什么b的结果是错误的呢? 展开
5个回答
展开全部
1. 不同的编译器int的长度不同,各种数据类型的长度也不一定相通
16位编译器int=short int=2字节
32位编辑器int=log int=4字节
具体编写一个程序输出各种类型占用字节数就知道了
printf("int %d\n",sizeof(int));
2. C语言的int类型与开发环境平台有关,可能是16位(2^16),也可能是32位(2^32),估计现在大多数开发环境都是用32位的,所以范围远远超出65535,可达到4294967296,所以你的程序可能可以运行
3. 你应该是用vs系列的编译器吧
微软把int类型分配了4个字节
就是int的范围是2147483647~-2147483648所以 可以执行
-----来自百度。
我也只是书上看到定义是: int的取值范围是 -32768~32767
自己跑了一下果然是。。。
16位编译器int=short int=2字节
32位编辑器int=log int=4字节
具体编写一个程序输出各种类型占用字节数就知道了
printf("int %d\n",sizeof(int));
2. C语言的int类型与开发环境平台有关,可能是16位(2^16),也可能是32位(2^32),估计现在大多数开发环境都是用32位的,所以范围远远超出65535,可达到4294967296,所以你的程序可能可以运行
3. 你应该是用vs系列的编译器吧
微软把int类型分配了4个字节
就是int的范围是2147483647~-2147483648所以 可以执行
-----来自百度。
我也只是书上看到定义是: int的取值范围是 -32768~32767
自己跑了一下果然是。。。
展开全部
在c语言中有些时候
int
和
char
看上去是可以通用的。
在你上面举的例子中,是以字符的形式显示
a
所表示的ascii码字符,
ascii的取值范围0~255,也就是1个字节。
char在c语言中是1个字节,而int要看不同的硬件、操作系统平台的不同而有区别,但不会小于2个字节,即最小2字节。
如果
int
类型赋值超过255时,c语言会取int
2个字节中的低字节的数据作为有效数据,也就是,350
等价于
94,因为350的低字节是94
int
和
char
看上去是可以通用的。
在你上面举的例子中,是以字符的形式显示
a
所表示的ascii码字符,
ascii的取值范围0~255,也就是1个字节。
char在c语言中是1个字节,而int要看不同的硬件、操作系统平台的不同而有区别,但不会小于2个字节,即最小2字节。
如果
int
类型赋值超过255时,c语言会取int
2个字节中的低字节的数据作为有效数据,也就是,350
等价于
94,因为350的低字节是94
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你是不是用的vc的编译器?
标准C中规定int是2字节。
vc编译器中,int是4字节,其范围是-2^31~2^31-1
vc编译器中,short int类型是2字节,等同于标准C中的int
你把程序中的int 前加上 short,看看结果 就对了。
标准C中规定int是2字节。
vc编译器中,int是4字节,其范围是-2^31~2^31-1
vc编译器中,short int类型是2字节,等同于标准C中的int
你把程序中的int 前加上 short,看看结果 就对了。
追问
是不是,只有int类型的才这么“不确定”?其他类型的,例如long 的是不是就无论哪种编译器都是32位?
追答
其他类型的没研究过,不过初学者也暂时不用研究这个,也用不到,也不能考。。。
知道int这个事就行了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
k++为自增一
其顺序是,现将k作为表达式运算后在自增一
自增后变量k的值为11+1=12
因此两个空都是12
望采纳!
其顺序是,现将k作为表达式运算后在自增一
自增后变量k的值为11+1=12
因此两个空都是12
望采纳!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的书很原始 那时候int是16位 -32768~32767
现在的cpu都64位了 你想想 int还可能是16位么
现在的int是32了
min:-2147483648 max:2147483647
满意请采纳 不懂继续问
现在的cpu都64位了 你想想 int还可能是16位么
现在的int是32了
min:-2147483648 max:2147483647
满意请采纳 不懂继续问
追问
是不是,只有int类型的才这么“不确定”?其他类型的,例如long 的是不是就无论哪种编译器都是32位?
追答
时代在变化 其实多多少少都有变化
你记住 现在的
int 32
long 32
double 64
float 32
char 8
指针 32
以后如果都128位cpu了 你说呢 肯定又会变
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询