C++入门④:数据类型

来源:互联网 发布:php获取访问者ip 编辑:程序博客网 时间:2024/06/17 14:33

整形

c++中整形变量有如下几种:short,int,long,long long。大致定义与java相同,但是在长度顶一方面两者还是有一定的区别的。
java上各种类型的长度定义在不同平台上都是一致的:int为32位长,short为16位长,long为64位长。
c++上各种类型的长度定义十分灵活,只保证了最小长度:short至少16位,int至少与short一样长,long至少32位,且至少与int一样长,long long至少64位,且至少要与long一样长。如果想要知道特定系统中各类型的长度,可以使用sizeof()函数,像这样:int len = sizeof(int)

short , long ,long long 分别是 short int ,long int,long long int的简写,当然并没有什么人会去使用它们的全称

上述四种类型都是有符号数,如果要使用无符号数,需要在他们之前加上unsigned修饰词,关于无符号数与有符号数的区别,就是最高位是否为符号位。

如果需要得到各种类型的最大/小值,我们需要用到符号常量,这些常量都在climits类中,如果需要用到他们,就需要使用#include指令。

vs中不需要预编译该类就可以使用这些常量,具体原因是创建项目的时候IDE为我们添加了众多的外部依赖项,从而使得我们不需要#include它们就可以使用。

在选择整形方面,一般而言是选择int类型,因为这是计算机处理最高效的长度,如果对占用空间有要求的话,可以使用short,如果想要表示超过16位整形的话最好使用long。

在整形的值的方面,c++与java,c相同,用前缀0x表示十六进制,前缀0表示八进制,无前缀表示十进制。

对于常量来说,常量的类型取决于其后缀,比如10l,这就是一个long类型的常量。如果常量没有后缀,那么c++将会把保存为常量最合适的状态(一般是int,常量大小超出int除外)。对于八进制,十六进制的常熟来说,编译器会把它们复制给最小的能表示他们的类型:有符号或无符号的int,long等。

字符

c++的char类型的编码为ASCII码,长度为8位即一个字节。而java的char类型的编码为unicode码,长度为两个字节,所以很多java中char类型可以表示的字符不能在c++的char类型中表示(不在ASCII码中的所有字符)。

另外有种特殊的字符为”转义序列“,这种字符c++与java的编码方式以及输入方式完全相同,就不再赘述。

如果需要在c++中使用非ASCII字符集的字符(比如汉字或者日文的话),则需要进行转码,并用wchar,或者char16_u,char32_u等存放,过程较复杂,以后再了解。

布尔类型

相比于c语言,c++中添加了一种新的类型来表示真假,即bool类型。
与java的boolean类型相似,均是赋值为truefalse,但是c++与java不同的是c++中的bool类型可以与int类型互换,具体如下:
true可以转换为int类型的1,false可以转换为int类型的0;如果是int转换为bool,那么所有非零值均转换为bool的true,0转换为bool的false。

两者之将的转换均为隐式完成。

const限定符

如同java中使用final限定了不可更改的常量,c++中也使用了const(当然java是借鉴c++),const用法非常简单,不再赘述。

ANSI C也是用了const限定符,这是从c++借鉴而来的。

浮点数

c++,java中均可以使用两种方法表示浮点数,其一是标准的小数表示法,即i = 2.5等,另一种方法为E表示法,形式为i = 2.1E10,E后面的数字只能是整数,表示将小数点向右(如果E后面的数是负数则向左)移动整数位,这种方法通常用于表示极大或者极小的数。

c++中浮点数类型有三种,分别是float(有效位数32位或以上),double(有效位数48位或以上且不小于float),long double(有效位数80,96,128位),这三种类型只是精度不同,他们的指数范围均为-37至37(不知道指数的去面壁)。

如果需要明确浮点常量,需要在值的后main分别加上F或者L以表示float或者long double,后缀没有这两个字母的时候则表示该值类型为double。

0 0
原创粉丝点击