您的位置:首页 > 编程语言

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

2018-02-03 23:44 393 查看
编程语言学习(二)  三种语言的基本数据类型、变量常量定义
 
(一)基本数据类型
一、C语言数据类型
只有三种:
1.整数类型int,可以加上unsigned/short/long/long long修饰,所占内存依short≤int≤long≤long
long递增,通常是2,2/4,4/8,8字节
2.浮点类型:float、double、long
double,所占内存依次递增,通常4,8,16字节,与编译器与CPU有关,有效数字分别是7,15位
3.字符类型,char,占据一个字节,存储一个ascii码,也可以用来存数字
 
二、C++语言数据类型
1.在C语言的基础上引入了bool类型,取值true/false,占据一个字节,类型总量达到四种。
 
2.针对字符串的问题,C++继承了C语言用字符数组存储字符串的方法,也可以用String类的对象存储字符串常量
 
 
三、Java语言数据类型
Java为了实现良好的跨平台,就务必保证各个数据类型在不同机器上占据的内存是固定的,所以它的数据类型所占空间与平台无关。
 
1.整数类型:抛弃了unsigned也抛弃了原先int可写可不写的状态,long/short与int脱钩,再加上新的整数类型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拿到了值,a和b只是定义下来没有初始化。
3.仅有字符串常量而没有字符串变量,双引号包括,内存最后一个\0
4.文字常量:
(1)整形:前缀0为八进制,0x为16进制,后缀可以是u或l/ll,例如:
int main(){
int m=58965ll; //无论一个或者两个l均编译正确
printf("%d",m);
}
(2)浮点型: 另有科学计数法 e/E前必需有值float型数据后缀f
(3)字符型:单引号内可以直接写八进制数字或者写x带上16进制数字,开头的0都是可以省略的。’\101’  101为8进制,等于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
  const在C语言中是在C99时才出现的,ANSI
C中不存在const,C和C++都推荐使用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.符号常量:推荐使用const,define不要用了。
 
 
三、Java语言变量与常量
1.变量取名:字母的范围扩展到了Unicode字符集里的内容,汉字都可以了,其他还是照旧。
2.变量定义与初始化:C/C++中都存在多文件情况下引入extern关键字作为声明,在java中声明和定义是合一的。
3.字符串可以用变量声明的方法构造,也可以用构造对象的方法以参数传入。
4.文字常量:
整数类型:增加了0b开头的二进制文字常量,后缀仅保留了l
浮点类型:float类型的文字常量保留了f,增加了Double.NaN,Double.POSITIVE_INFINITY,Double.NEGATIVE_INFINITY三个文字常量。
字符类型:支持中文了,‘我’也可以。
5.符号常量:采用了final关键字,而不是const,final与const的区别在未来会仔细谈的。

附录:wchar_t的使用:

int main()
{
wchar_t c = L'你';
wcout.imbue(locale("chs"));
wcout << c << endl;
system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐