大一第一学期期末C语言程序设计笔记(二)

9、转义字符

  转义字符是C语言中表示字符的一种特殊形式。通常使用转义字符表示ASCII码字符集中。不可打印的控制字符和特定功能的字符

转义字符 

意义 

A S C I I码值(十进制) 

\ a 

响铃( B E L ) 

0 0 7 

\ b 

退格( B S ) 

0 0 8 

\ f 

换页( F F ) 

0 1 2 

\ n 

换行( L F ) 

0 1 0 

\ r 

回车( C R ) 

0 1 3 

\ t 

水平制表( H T ) 

0 0 9 

\ v 

垂直制表( V T ) 

0 11 

\ \ 

反斜杠 

0 9 2 

\ ? 

问号字符 

0 6 3 

\ ' 

单引号字符 

0 3 9 

\ " 

双引号字符 

0 3 4 

\ 0 

空字符( N U L L ) 

0 0 0 

\ d d d 

任意字符 

三位八进制 

\ x h h 

任意字符 

二位十六进制 

 

注意:

  • 转义字符中只能使用小写字母,每个转义字符只能看作一个字符。
  • \v 垂直制表和\f 换页符对屏幕没有任何影响,但会影响打印机执行相应操作。

在C程序中,使用不可打印字符时,通常用转义字符表示。

 

10、符号常量

         C语言允许将程序中的常量定义为一个标识符,称为符号常量。符号常量一般使用大写英文字母表示,以区别于一般用小写字母表示的变量。符号常量在使用前必须先定义,定义的形式是:

          #define  <符号常量名>  <常量>

    例如:#define             PI              3.1415926

          # define是C语言的编译预处理命令,它表示经定义的符号常量在程序运行前将由其对应的常量替换。

11、变量

<1>.整型变量(太熟悉了,我就不展开了)

<2>.实型变量

          实型变量分为单精度(float型)和双精度(double型)。如:

           float  x,y;      / *定义x , y为单精度实数/

           double  z;       / *定义z为双精度实数/

  • 一个float型数据在内存中占4个字节(32位),提供7位有效数字
  • 一个double型数据占8个字节(64位),双精度提供15 ~ 16位有效数字
  • 值得注意的是,实型常量是double型,当把一个实型常量赋给一个float型变量时,系统会截取相应的有效位数。

<3>.字符变量

字符变量用来存放字符变量,注意只能存放一个字符,不要以为在一个字符变量中可以放字符串。字符变量的定义形式如下:

         char c1, c2;

         它表示c 1和c 2为字符变量,各放一个字符。

         因此可以用下面语句对c 1、c 2赋值:

        c1 = 'a'; 

         c2 = 'b';  

  • 字符变量可以当整数来进行运算,所对应的值为其ASCII码值

12、优先级记忆法:

              去掉一个最高级,再去掉一个最低级。

                一、二、三和赋值。

说明:最高级是括号和元素及成员(共4个).最低级是逗号((1个).一是单目运算符(共9个),二是双目运算符(共1 F}个),三是三目运算符(1个),赋值是赋值运算符(11个).接着。在双目运算符中。还包含有}0个优先级。这10个优先级记忆方法是:

                 算术2.关系2,逻辑2;移位1插在前,逻辑位3插在后。   

说明:"算术2}表明算术运算符又分二个优先级,、,/和%在前,+,-在后。"关系2"表明它在算术运算符后边有二类优先级,<,<=,>,>=在前,+,-在后。"逻辑2"表明它在关系运算符之后。又分2个优先级,&&在前,||在后。"移位1插在前"表明移位运算符是1个优先级插在算。术和关系之间,即>>夕和<<."逻辑位3插在后"表明逻辑位运算符有3个优先级,&在前,-在中,|在后,它们插在关系和逻辑之间,这样,15种优先级的顺序就记住了。

算术运算符的优先级:

  最高+ +- -

      -(单目运算符取负号)

      */%

      最低+-

  • 当“/”被用于整数或字符时,结果取整。
  • 模运算取整数除法的余数,所以“%”不能用于float和double类型。
  • 自增或自减运算符在操作数之前(++x,x--),C语言在引用操作数之前就先执行加1或减1操作;运算符在操作数之后(x++,x--),C语言就先引用操作数的值,而后再进行加1或减1操作。
  • 编译程序对同级运算符按从左到右的顺序进行计算。而 + +--的结合方向是“自右向左”。如 - i + + ,它相当于: -( i + +)。 
        • 注:

          • 参加逻辑运算的数据类型可以是字符型,整型,浮点型。
          • 优先级: 

             当一个逻辑表达式中包含多个逻辑运算符时按以下的优先顺序:

                 !(非),&&(与),||(或),即“!”是三者中最高的。 

             逻辑运算符中的“&&”和“||”低于关系运算符,“!”高于算术运算符。

          • 短路现象

            n &&(与),||(或)都有短路现象

13、关系运算中,应避免对实数作相等或不等于0的判断

如:1.0/3.0*3.0=1.0  可改写为:fabs(1.0/3.0*3.0-1.0)<1e-6

 

14、位运算是指按二进制进行的运算。在系统软件中,常常需要处理二进制位的问题。C语言提供了 6个位操作运算符。这些运算符只能用于整型操作数,即只能用于带符号或无符号的char,short, int与long类型。

 

表3.8为C语言提供的位运算符列表:

 

位运算符表

 

运算符 

含义 

描述 

按位与 

如果两个相应的二进制位都为1,则该位的结果值为1,否则为0 

按位或 

两个相应的二进制位中只要有一个为1,该位的结果值为1 

按位异或 

若参加运算的两个二进制位值相同则为0,否则为1 

取反 

~是一元运算符,用来对一个二进制数按位取反,即将0变1,将1变0 

<< 

左移 

用来将一个数的各二进制位全部左移N位,右补0 (a=<<2)

>> 

右移 

将一个数的各二进制位右移N位,移到右端的低位被舍弃,对于无符号数,高位补0 (a=>>2)

 

0&0=00&1=01&0=01&1=1

 

3&5!=8,因为:00000011(3)&00000101(5)=00000001(1);

 

注意:如果参加&运算的是负数(如-3&-5),则要以补码的形式表示二进制数,然后再按位进行“与”运算。

 

右移一位相当于除以2,右移n位相当于除以2n,左移相反。

 

高位左移后溢出,舍弃。

 

15、

 C语言中逻辑运算符(&&||!)和位运算符号(&|^)的区别

C语言中,编程者经常混淆两组运算符:(&&||,!)和(&|^)。第一组是逻辑运算符,它的操作数是布尔型,而第二组则是位运算符,其操作数是位序列。在布尔型操作数中,只有两个数值,01C语言规定,在逻辑运算中,所有的非0数值都看做1处理。而位序列则可以是有无符号的字符型,整型,长短整型等。在位运算中,是相应的位之间进行逻辑运算。因此,从逻辑上讲,位运算过程包含多个逻辑运算过程。通常,位运算操作数选择无符号型数据。

16、逗号运算符

< 表达式1 >, < 表达式2 >, <表达式3 >, … <表达式n >

逗号表达式的求解过程是:先求解表达式1,再求解表达式2,直到求解完表达式n,最后一个逗 号表达式的值是整个逗号表达式的值。逗号运算符又称为“顺序求解运算符”

逗号运算符是所有运算符中级别最低的

17、条件运算符

表达式1?表达式2:表达式3

  1. 条件运算符的执行顺序:先求解表达式1,若为非0(真)则求解表达式2,此时表达式2的值就作为整个条件表达式的值。若表达式1的值为0(假),则求解表达式3,表达式3的值就是整个条件表达式的值。 
  2. 条件运算符优先于赋值运算符 
  3. 条件运算符的结合方向为“自右至左”。 
  4. 通常用条件表达式取代简单的条件语句 
  5. 条件表达是也有短路操作

18、混合运算(数据类型转换)

 

 

19++,--操作

++,--在操作数之前,则在引用该数据之前进行自加自减操作

++,--在操作数之后,则在引用该数据之后进行自加自减操作

短路操作符

&&,||,?:

对于?:,在C中与它优先级相同的只有它自己,因此只有连续的?:才会体现出它的右结合性,即a?b:c?d:e中,根据右结合性可知应理解为a?b:(c?d:e)。

 

posted @ 2014-01-18 16:11  微卑.  阅读(1413)  评论(0编辑  收藏  举报