C和指针第4-5章.pptVIP

  • 0
  • 0
  • 约1.91千字
  • 约 19页
  • 2017-12-26 发布于河北
  • 举报
C和指针第4-5章

第4章 语句 if语句 if(expression) statement else statement 括号是if语句的一部分,而不是表达式的一部分,因此它是必须出现的。 两断代码的区别 第一段代码if语句中,表达式x?3的值将是0或1.如果是1,就打印出Greater;如果值是0,它就打印出No greater。 第二个代码段跟第一个代码段的功能完全相同,它们的唯一的区别是比较的结果(0或1)首先保存于一个变量中,以后才进行测试。 break和continue语句 在while循环中可以使用break语句,用于永久终止循环。在执行完break语句之后,执行流下一条执行的语句就是循环正常结束后应该执行的那条语句。 在while循环中也可以使用continue语句,它用于永久终止当前那次循环。在执行完continue后,执行流接下来就是重新测试表达式的值,决定是否继续执行循环。 如何在while语句和do语句之间选择? 当你需要循环体至少执行一次时,选择do语句。 例:下面的循环依次打印1至8个空格,用于进到下一个制表位。 switch语句 switch(expression) statement 该表达式中expression的结果必须是整型值。 switch语句中,continue语句没有任何效果。只有当switch语句位于某个循环内部时,你才可以把continue语句放在switch内。 在一个没有循环体的循环中,用一个分好表示空语句,并让它独占一行 for循环的可读性比while循环强,因为它把用于控制循环的表达式收起来放在一个地方。 在每个switch语句中都使用default子句。 第5章 操作符和表达式 算术操作符% %为取模操作符,它接受两个整型操作数,把左操作数除以右操作数,但它返回的值是余数而不是商。 移位操作符 左移操作符为??,右移操作符为??。 单目操作符 !操作符对它的操作数执行逻辑取反操作 ~ 操作符对整型类型的操作数进行求补作用 操作符产生操作数的负值 + 操作符产生操作数的值 操作符产生它的操作数的地址。 例 int a,*b; … b=a; 表达式b的值是变量a的地址,表达式*b的值则是变量a的值。 sizeof操作符 sizeof操作符判断它的操作数的类型长度,以字节为单位表示。操作数可以是表达式,也可以是两边加上括号的类型名。 例 sizeof (int) sizeof x 第一个表达式返回整型变量的字节数; 第二个表达式返回变量x所占据的字节数。 从定义上说,字符变量的长度为1个字节。当sizeof的操作数是个数组名时,它返回该数组的长度,以字节为单位。在表达式的操作数两边加上括号也是合法的,如 sizeof (x) 因为括号在表达式中总是合法的。判断表达式的长度并不需要对表达式进行求值,所以sizeof(a=b+1)并没有向a赋值。 if(expression!=0)… if(expression) if(expression==0)… if(!expression)… 逻辑操作符 逻辑操作符有和‖。 位操作符常常与逻辑操作符混淆,但是它们是不可互换的。它们之间的第一个区别是和‖操作符具有短路性,,如果表达式的值可根据左操作数决定,就不再对右操作数进行求值。相反,|和操作符两边的操作数都要进行求值。 -?操作符用于访问一个结构的成员。如果s是个结构变量,那么s.a就是访问s中名为a的成员。当你拥有一个指向结构的指针而不是结构本身,且欲访问它的成员时,就需要使用-?操作符而不是操作符。 左值和右值 左值就是那些能够出现在赋值符号左边的东西。右值就是那些可以出现在赋值符号右边的东西,如 a=b+25; 但是,b+25=a; 是不正确的,因为原来作用左值的a此时可以当作右值,因为每个位置都包含一个值。但是b+25不能作为左值,因为它并未标识一个特定的位置。 有符号值的右移位操作是不可移植的。 移位操作符的位数是个负值。 连续赋值中各个变量的长度不一。 表达式赋值的位置并不决定表达式计算的精度。 编写结果依赖于求值顺序的表达式。 * 复合赋值符 例 第2种形式效率更高,因为下标只计算一次 *

文档评论(0)

1亿VIP精品文档

相关文档