编程语言学习(二) 三种编程语言的数据类型、变量常量定义

编程语言学习()  三种语言的基本数据类型、变量常量定义

 

(一)基本数据类型

一、C语言数据类型

只有三种:

1.整数类型int,可以加上unsigned/short/long/long long修饰,所占内存依shortint≤long≤long long递增,通常是22/44/8,8字节

2.浮点类型:floatdoublelong double,所占内存依次递增,通常48,16字节,与编译器与CPU有关,有效数字分别是7,15

3.字符类型,char,占据一个字节,存储一个ascii码,也可以用来存数字

 

二、C++语言数据类型

1.C语言的基础上引入了bool类型,取值true/false,占据一个字节,类型总量达到四种。

 

2.针对字符串的问题,C++继承了C语言用字符数组存储字符串的方法,也可以用String类的对象存储字符串常量

 

 

三、Java语言数据类型

Java为了实现良好的跨平台,就务必保证各个数据类型在不同机器上占据的内存是固定的,所以它的数据类型所占空间与平台无关。

 

1.整数类型:抛弃了unsigned也抛弃了原先int可写可不写的状态,long/shortint脱钩,再加上新的整数类型byte来代替C\C++当中的char类型,形成以下四种小类型:byte 1个字节,short 2个字节,int 4个字节,long 8个字节。

2.浮点类型:抛弃了long double类型,仅float4个字节,double 8个字节。

3.字符类型:char改为2个字节,扩展到Unicode上所有编码,但是由于Unicode实际编码数已经超过65535个,所以现在用char类型有新机制,基本无碍。

 

4.布尔类型改名为boolean,取值严格限定在true/false,以往while(1)这种代码在java中不行了

 

 

(二)变量与常量定义77

一、C语言变量与常量

1.变量取名:由字母数字下划线组成,开头不能是数字。建议不要用下划线开头,库程序里多数以下划线开头。

2.变量定义与初始化:

语法:数据类型+标识符

C99开始支持随处定义变量,ANSI C时只能放在代码最开头。

可以多个定义,并初始化一个 int a,b,c=55;实际上只有c拿到了值,ab只是定义下来没有初始化。

3.仅有字符串常量而没有字符串变量,双引号包括,内存最后一个\0

4.文字常量:

(1)整形:前缀0为八进制,0x16进制,后缀可以是ul/ll,例如:

int main(){

int m=58965ll; //无论一个或者两个l均编译正确

printf("%d",m);

}

(2)浮点型: 另有科学计数法 e/E前必需有值float型数据后缀f

(3)字符型:单引号内可以直接写八进制数字或者写x带上16进制数字,开头的0都是可以省略的。’\101’  1018进制,等于65,该字符为A’\x41’也是A

char c='\x41';

printf("%c",c);

另有一些控制用的逃逸字符,重要的是\b,\r,\n,\t,\\,\t,\’,\”

仅有字符串常量而没有字符串变量。双引号包括,内存最后一个\0

 

5. 符号常量

<1>const关键字定义常量 const AMOUNT=100;定义时就得赋值

<2>define宏定义的常量  #define AMOUNT 100

  constC语言中是在C99时才出现的,ANSI C中不存在constCC++都推荐使用const而不采用define宏定义,是因为define宏定义在编译预处理时进行替换,一旦出现bug,并不会在bug中显示出错的常量名,对于更正造成很大不便,在内存分配上按理说define宏定义是不占内存的,继续还得探讨。

 

PS:符号常量的本质是只读的变量,真正的常量只有字面常量和在枚举类型的成员中出现。

 

 

二、C++语言变量与常量

1.变量取名:引入了名字空间的概念,不怕下划线开头了。其他还是照旧。

2.变量定义与初始化:本质是一个标识符结合到一组内存空间。变量定义时也可以进行初始化,若不进行初始化,会根据变量所处的位置(全局/局部)来确定初始值。

初始化方法除了等号,还介绍了三种,

直接赋值或者圆括号:int a=10;  int a(0);

列表初始化,要求不能有数据丢失int a{10};int a={10};

3. 字符串可以用String类的对象存储,也可以以字符数组的形式存在,

4. 文字常量:与C语言相同,但是字符串当中出现了前缀:

具体有u/U/L/u8四种,我们知道的字符串是由字符组成的,字符类型不仅仅有char类型,我只介绍C++11之前有的wchar_t类型,可以实现Unicode的字符输出,代码见后面。

5.符号常量:推荐使用constdefine不要用了。

 

 

三、Java语言变量与常量

1.变量取名:字母的范围扩展到了Unicode字符集里的内容,汉字都可以了,其他还是照旧。

2.变量定义与初始化:C/C++中都存在多文件情况下引入extern关键字作为声明,在java中声明和定义是合一的。

3.字符串可以用变量声明的方法构造,也可以用构造对象的方法以参数传入。

4.文字常量:

整数类型:增加了0b开头的二进制文字常量,后缀仅保留了l

浮点类型:float类型的文字常量保留了f,增加了Double.NaNDouble.POSITIVE_INFINITYDouble.NEGATIVE_INFINITY三个文字常量。

字符类型:支持中文了,‘我’也可以。

5.符号常量:采用了final关键字,而不是constfinalconst的区别在未来会仔细谈的。



附录:wchar_t的使用:

int main()
{
	wchar_t c = L'你';
	wcout.imbue(locale("chs"));
	wcout << c << endl;
	system("pause");
	return 0;
}

没有更多推荐了,返回首页