我是一个C语言初学者有以下几个问题不理解希望帮忙解决
1. 在C语言中 基本整型数据和短整型数据在内存中都是占用2个字节数值范围也一样是-32768~32767 也就是说基本型数据和短整型数据是一样?还是不一样?区别在哪?
2. 还有一个,一个数465356书上是说虽然面值是在长整型范围内,但是数值后面未加后缀L因此不能代表一个长整型数,但是它已超过了基本整型和短整型数的数值范围,那465356到底是一个什么类型的整数?
希望知道的大侠指点指点,先谢了
1.数据范围具体是看编译器的
2.常数没有类型吧
你说错了,你说的整型数据,就是短整型数据,这是C默认的,
int a;等于short int a;
还有你说的加L的问题,也是错的,不是说465356不是长整型,而是说用465356运算的表达式的值,或者说变量!!!
我还是不能理解
但谢了
我在细说一下:
所说的shot int a;和int a;是一个意思,是因为:当你在程序中输入int a;后,系统会自动的把你写的语句改为shot int a;
(并不是这样,但可以这样理解。)这样,你后面的操作也是一样的了!!!
而所谓的长整型的问题,你看:
long a,b;
a=32767+100;
b=32767+100l;
printf("a=%d,b=%d",a,b);
就应该明白一点了!
常量也是有类型的。
至于类型在内存中占的字节数,我同意2楼所说,具体类型按具体编译器决定。
printf("%d\t%d\t%d\t%d\t%d",sizeof(3),sizeof(3l),sizeof(3444443),sizeof(344443l),sizeof(4.3l));