c第三章表达式和语句.pptVIP

  • 0
  • 0
  • 约1.31万字
  • 约 46页
  • 2019-09-12 发布于福建
  • 举报
C++规定,if…else语句成对的规则是:else连接到上面第1个没有配对的且为可见的if上。所以上例的else应属于第二个if语句,即第一种解释。 又例如: if(条件) if(条件) { if(条件) 语句; } else 语句; 上例的else连到第2个if上,因为第3个if不可见。第2个if是else最先碰到的没有配对过的if。 3.7 条件运算符 条件运算符的语法为: (条件表达式)?(条件为真时的表达式):(条件为假时的表达式) 例如: x=ab?a:b; 条件运算符构成一个表达式。它是C++中唯一一个3目运算符,它们之间用“?”和“:”隔开。上例中,把a和b中较小的值赋给x。该例是if…else语句的一个替代: if(ab) x=a; else x=b; 条件运算符构成的表达式,它是有值的。而if…else语句不能有值,所以if…else语句不能替代条件运算符。例如,下面的代码不能由if…else替代: cout(ab?a:b)endl; 输出语句要打印一个值,该值是a与b的较小值。由于 优先级高于条件运算符,所以输出语句中要将条件运算符构成的表达式用括号括起来。 条件运算符表达式的值与测试值没有直接的关系。例如: cout(number==1?”file”:”files”)endl; 该输出语句中,条件运算符表达式的条件若成立,取值为“file”,否则,取值为“files”。其中,条件为两个整型数的比较,而表达式的值为字符串。 条件运算符可以嵌套。例如: xy?”greater than ”:x==y?”equal to”:”less than” 它等价于: (xy)?”greater than”:((x==y)?”equal to”:”less than”) 当xy时,值为“greater than”,x==y时,值为“equal to”, 否则,值为“less than”。条件运算符的嵌套可读性不够好。 在一个条件运算符的表达式中,如果后面两个表达式的值类型相同,均为左值,则该条件运算符表达式的值为左值表达式。例如: int x=5; long a,b; (x?a:b)=1; (x?x:a)=2; (x==2?1:a)=3; 任何被转换的变量都不是左值。 在C中,条件运算符不能作左值的。 3.8 逗号表达式 逗号表达式的语法为: 表达式1,表达式2,…,表达式n C++顺序计算表达式1,表达式2,……,表达式n的值。 例如: int a,b,c; a=1,b=a+2,c=b+3; 由于按顺序求值,所以能够保证b一定在a赋值之后,c一定在b赋值之后。该逗号表达式可以用下面3个有序的赋值语句来表示: a=1; b=a+2; c=b+3; 逗号表达式是有值的,这一点是语句所不能代替的。逗号表达式的值为第n个子表达式的值,即表达式n的值。例如 int a,b,c,d; d=(a=1,b=a+2,c=b+3); coutdendl; 输出结果为: 6 上例中输出的结果d即为c的值。 逗号表达式还可以用于函数调用中的参数。例如: func(n,(j=1,j+4),k); 该函数调用有3个参数,中间的参数是一个逗号表达式

文档评论(0)

1亿VIP精品文档

相关文档