c语言longlong
⑴ 关于c语言中的long long 的问题
signed char有符号字节,表示范围是-128~127,
unsigned char是无符号字节,表示范围是0~255。
long long是有符号长整形,表示范围是-2^63~2^63-1。
signed char,unsigned char都是显式声明的有符号/无符号,而char可能是二者其中之一,由编译器决定。就是说,如果你写char,有可能是signed的,也有可能是unsigned的。但是绝大多数编译器是默认为signed的。
值得注意的是,上面讲的是表示范围,但是无论是C还是C++,signedchar、unsignedchar、char是三种不同的类型。
出现这种情况可以归结为历史原因。早期C没有专用于算术运算的单字节整数类型,实现中也无法保证char使用什么符号(不同符号转换为超过一个字节的整数类型时各个硬件平台的效率有差异)。后来才追加signedchar和unsignedchar。其符号是implementation-defined。
例子:
#include<stdio.h>
intmain()
{
signedchara=255;
unsignedcharb=255;
charc=255;
longlongd=100000000000;
longe=100000000000;
printf("%d ",a);
printf("%d ",b);
printf("%d ",c);
printf("%lld ",d);
printf("%d ",e);
return0;
}
结果:
可以发现可以容纳的大小是不同的。
其中a,c,e发生了溢出,产生了不正确的结果。
⑵ objective c语言中的long与long long类型最大最小值分别都是相同的吗
都是相同的,在C语言当中 long == long long。
1. long 是C语言的一个关键字,代表一种数据类型,中文为长整型。
2. long是long int的简写,也就是说,在C语言中long int类型和long类型是相同的。
3. 每个long型占4个字节,在32位编译系统下,long和int占的空间是相同的。这也导致了long型变量使用的越来越少了。
4. long型可以表示的整型数字范围为-2,147,483,648 ~ 2,147,483,647, 即-2^32 ~ 2^32-1。
在用在C的格式化输入输出时,long型的格式化字符为"%ld"。
5. long同其它整型类型一样,可以同unsigned 联合使用,形成unsigned long,即无符号长整型, 其格式化字符为"%lu"。
6. 在部分编译器下,比如gcc, 两个long合用,即long long类型,表示C语言目前最长的系统整型类型,每个long long类型占8字节,64位。其格式化字符为"%lld"。
⑶ c语言long和long long有什么区别
long long在win32中是确实存在,长度为8个字节;定义为LONG64。
为什么会出现long int呢,在win32现在系统中,长度为4;在历史上,或者其他某些系统中,int长度为2,是short int。
即便是long long,在TI的有款平台中,长度为5。
也就是说,每种类型长度,需要sizeof才知道,如果可能,最好用union看看里面的数据,可以消除一些类型的假象长度。