TC中赋值问题

来源:百度知道 编辑:UC知道 时间:2024/06/30 14:49:22
#include<stdio.h>
main()
{
int a;
a=100000;
printf("a=%d\n",a);
}
如上,a的值超过了INT的范围。但是运行的时候没警告,显示a的结果却不是被赋予的值!为什么
第一疑问是a的值超过了INT的范围编译时为什么不警告?第二疑问是既然编译不警告,那么显示a的结果却不是被赋予的值?

它只取100000的低16位,并将最高位(第16位)作为符号位进行解释。

int a;

改为:

long int a;

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

printf("a=%d\n",a);

改为:

printf("a=%ld\n",a);

*******************************************

看来你对C语言不了解,你说的这些就是C语言的灵活性的体现!不是有错误!

#include<stdio.h>
main()
{
long int a;
a=100000;
printf("a=%ld\n",a);
}
int的取值范围为:-32768~32767在IBM PC机上普通整型占16位,而16bit能表示的最大整数是2^15-1,即32767

超出数据类型所表示的范围就会益出。。显示可能会变成一个负数