A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 墨琰 中级黑马   /  2015-8-11 21:50  /  597 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

 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.关键字(系统指定含义的标识符,全部小写),不能用作变量名,函数名以及数组名。

2 个回复

倒序浏览
赞赞赞了啊
回复 使用道具 举报

互相学习  加油
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马