黑马程序员技术交流社区
标题:
C的数据类型
[打印本页]
作者:
墨琰
时间:
2015-8-11 21:50
标题:
C的数据类型
1.运算符的优先级:算数运算符>关系运算符>赋值运算符(一个加减乘除的算术表达式,结合律是自左至右。例int a=i+j*3/6;)
2.+正号 -负号 !<运算规则是自右至左,因为其是一个单目运算符,代表的是非0为真>
3. 1978年,丹尼斯•里奇(Dennis Ritchie)和布莱恩•柯林汉(Brian Kernighan)合作出版了《C程序设计语言》的第一版。书中介绍的C语言标准也被C语言程式设计师称作“K&R C”,第二版的书中也包含了一些ANSI C的标准。K&R C主要介绍了以下特色:
结构(struct)类型
长整数(long int)类型
无符号整数(unsigned int)类型
把运算符=+和=-改为+=和-=。因为=+和=-会使得编译器不知道使用者要处理i = -10还是i =- 10,使得处理上产生混淆。
即使在后来ANSI C标准被提出的许多年后,K&R C仍然是许多编译器的最低标准要求,许多老旧的编译仍然运行K&R C的标准。
增加了真正的标准库
新的预处理命令与特性
函数原型允许在函数申明中指定参数类型
一些新的关键字,包括 const、volatile 与 signed 宽字符、宽字符串与字节多字符
对约定规则、声明和类型检查的许多小改动与澄清
C99
2000年3月,ANSI 采纳了 ISO/IEC 9899:1999 标准。这个标准通常指C99。 C99新增了一些特性,如:
支持不定长的数组,即数组长度可以在运行时决定。
变量声明不必放在语句块的开头,for 语句提倡写成 for(int i=0;i<100;++i) 的形式,即i 只在 for 语句块内部有效。
初始化结构的时候允许对特定的元素赋值。
允许编译器化简非常数的表达式。
取消了函数返回类型默认为 int 的规定。
但是各个公司对C99的支持所表现出来的兴趣不同。当GCC和其它一些商业编译器支持C99的大部分特性的时候,微软和Borland却似乎对此不感兴趣,他们把更多的精力放在了C++上。
C11
在2011年12月,ANSI 采纳了 ISO/IEC 9899:2011 标准。这个标准通常即C11,它是C程序语言的最新标准。
4.void类型的变量
在C语言中,凡不加返回值类型限定的函数,就会被编译器作为返回整型值处理。
add ( int a, int b )
{
return a + b;
}
int main(int argc, char* argv[])
{
printf ( "2 + 3 = %d", add ( 2, 3) );
}
程序运行的结果为输出:
2 + 3 = 5
这说明不加返回值说明的函数的确为int函数。
5.有些情况下程序可以顺利通过编译,但程序不一定正确。(语法正确,逻辑错误!)
6.计算机组成以及运行:计算机组成分,CPU,主板,硬盘,内存,电源
运行原理,计算机通电后,CPU通过读取指令对各个硬件协调运作。
7.计算机语言发展历史:
1)机器语言(由0和1组成的二进制字节码组成,存储方式不同数据类型分为原码,反码,补码),其编译不需要编译器的参与,直接操作计算机硬件。
2)汇编语言:不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令。汇编语言的编译器做的工作较少,所以相对高级语言其运行效率较高。
3)高级语言:接近于人类自然语言,其编译,链接,运行对编译器的要求较高(由于计算机编程语言的发展越发接近人类的自然语言,当转换成计算机能够识别运行的指令时需要更为优秀的编译器,占内存小,运行效率高,对一些无效指令的减少处理,碎片的处理等等都是其关键之处)
由于高级语言转换成机器语言的过程中需要编译器的参与,故该语言的可移植性较高,依托于编译器。
高级语言又分为面向对象(Java,C++,Objective_C)和面向过程(C语言)两种方向的语言。
8.编译器的发展:
1)应该是基于编程语言的进步,高级语言需要更大的编译器,所以比较占用内存,解释能力较强。
2)汇编语言编译器占用内存小,运行效率高,但其不可以移植(估计和编译器功能有关)
9.关于基本数据类型之间的转换:
1)当两种不同数据类型的数据进行运算时,占用内存小的数据类型会自动转换成占用内存高的字节的数据(称为自动类型转,char_short_int_long_float_double)。
2)高字节数据转成低字节数据,需要强制类型转换,会损失精度。
10.C程序代码的运行过程:编写C源程序(.c),编译源程序(Clang编译器的终端执行指令是CC_ C 源程序名字.c),链接重构(链接库函数),再编译(生成.o目标代码),最后一步进行执行生成计算机识别的机器语言。
11.++a和a++的运算区别,前者在参与算术运算之前先自增一运算,然后参与运算。后者,先参与算术运算之后再进行自增一运算。(++,--,只能用于操作变量)
12.任何一个字符参与运算时,都会转成对应的ASCII码表对应的int值。
13.sizeof
14.关键字(系统指定含义的标识符,全部小写),不能用作变量名,函数名以及数组名。
作者:
阿伦666
时间:
2015-8-11 21:55
赞赞赞了啊
作者:
墨琰
时间:
2015-8-12 22:34
阿伦666 发表于 2015-8-11 21:55
赞赞赞了啊
互相学习 加油
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2