控制结构
知识点
1. C#提供了一元自增运算符++和自减运算符--。
运算符 |
名称 |
示范表达式 |
解释 |
++ |
前自增 |
++a |
预先在a的基础上加1,然后在a所在表达式中使用a的新值 |
++ |
后自增 |
a++ |
在a所在表达式中使用a的当前值后,让a加1 |
-- |
前自减 |
--b |
预先在b的基础上减1,然后在b所在表达式中使用b的新值 |
-- |
后自减 |
b-- |
在b所在表达式中使用b的当前值后,让b减1 |
常见编程错误
1. 试图对非变量引用的一个表达式使用自增或自减运算符,会造成语法错误。所谓变量引用,是在赋值运算左侧出现的一个变量或者表达式。例如,++(x+1)是一个语法错误,因为(x+1)并非变量引用。
2. 假如一个for结构的控制变量最早在for结构头部的初始化部分定义的,那么在结构的主体之后,再使用控制变量会导致语法错误。
3. 在for结构中使用逗号而不是必需的分号,会造成语法错误。
4. 如果在for结构头的右括号之后紧接一个分号会导致for结构的主体编程一个空语句。这通常是逻辑错误。
5. 忘记在switch结构的每个case末尾放置一个break语句,会造成语法错误。唯一的例外是空case,它的break可以被省略。
6. 创建case时,务必检查所有可能的值,确定switch语句中没有两个case用于相同的整型值,如有相同值,会产生编译错误。
良好编程习惯
1. 在for的初始化及自增部分,只使用于控制变量有关的表达式。如还需对其它变量进行处理,就需在循环之前进行(前提是它们只执行一次,比如初始化语句),或者在循环主体内进行(前提是每次重复都要执行,比如自增或自减语句)。
2. 如表达式中包换不变化的值,要避免把它放到一个循环中。这样的表达式只应在循环之前求值一次。通过“优化”,大多数编译器都能禁止冗余的求值。
3. switch结构中每个case主体语句都应该缩进
4. 在每个switch结构中都提供一个default条件。在使用了default条件的switch结构中,没有明确测试的条件会被忽略。如包括一个default条件,会强制程序员对异常情况进行处理。但某些条件下,不需要处理default。
5. 尽管在switch结构中的各个case可按任意顺序发生,但作为一种良好习惯,应该default条件置于最后。
6. 有的程序员认为break和continue违反了结构化编程的准则。由于这些语句的效果可由结构化编程技术实现,所以这些程序员不使用break和continue。
7. 实现高质量的软件工程和获得最佳性能,总是两者无法兼得。通常,达到了其中的一个目标,就必然要在另外一个上付出代价。对于大多数强调性能的应用,可应用一下准则:首先,确保代码简单和正确;然后,使其更快更小,但只是在绝对必要的前提下。
8. 在使用了&&运算符的表达式中,假如不同的条件是相互独立的,就将最有可能成为false的条件放到最左边。再使用了||运算符的表达式中,应把最有可能成为true的条件放到最左边。这样可缩短程序执行时间。