顺序结构是最简单的结构,程序按照代码的书写顺序依次执行每一条语句,没有分支或循环结构。
关于在顺序结构中,计算结果的问题:
int main()
{
int i=2;
int j=3;
int k ;
k = i < 0 && ++j;
printf("%d\n",j);
}
输出:3
原理:C语言中为了提高程序效率,从左向右计算过程中,如果为真继续算,如果第一步就是0则不会计算后面的内容,就好比0成任何数均为0,不会看后面有什么复杂公式。
在 k = i < 0 && ++j;
中,i<0
判断为假 并且是 与运算(有0则0),因此右侧不再计算,输出3。如果左侧判断为真,则继续计算右侧
选择结构允许根据条件选择性地执行不同的代码块。在C语言中,常用的选择结构是if
语句
基本使用方法简单叙述一遍,相对注意的点在于switch case中
if (condition) {
// 如果条件为真执行这里的代码
}
if (condition) {
// 如果条件为真执行这里的代码
} else {
// 如果条件为假执行这里的代码
}
if (condition1) {
// 如果条件1为真执行这里的代码
} else if (condition2) {
// 如果条件2为真执行这里的代码
} else if (condition3) {
// 如果条件3为真执行这里的代码
} else {
// 如果以上条件都不满足执行这里的代码
}
switch(expression){
case constant-expression :
statement(s);
break; /* 可选的 */
case constant-expression :
statement(s);
break; /* 可选的 */
/* 您可以有任意数量的 case 语句 */
default : /* 可选的 */
statement(s);
}
case 的 constant-expression 必须与 switch 中的变量具有相同的数据类型,且必须是一个常量或字面量。
当被测试的变量等于 case 中的常量时,case 后跟的语句将被执行,直到遇到 break 语句为止。
当遇到 break 语句时,switch 终止,控制流将跳转到 switch 语句后的下一行。
不是每一个 case 都需要包含 break。如果 case 语句不包含 break,控制流将会 继续 后续的 case,直到遇到 break 为止。
一个 switch 语句可以有一个可选的 default case,出现在 switch 的结尾。default case 可用于在上面所有 case 都不为真时执行一个任务。default case 中的 break 语句不是必需的。
循环结构允许多次执行相同的代码块,直到某个条件不再满足。在C语言中,常用的循环结构有for
、while
和do-while
。
先执行一次,判断表达式,为否跳出循环,为1继续执行循环程序
do
循环体语句
while(表达式);
for ( 表达式1; 表达式2; 表达式3 )
{
statement(s);
}
值得说的就是表达式3中:++i
比 i++
执行效率更高,涉及到内存计算方式,虽然表达的效果是一样的