分支与循环
在 C 语言中,if 语句和 while 循环都依赖于布尔表达式的概念。下面是一个简单的 C 语言程序,演示了 if 语句:
#include int main() { int b; printf("Enter a value:"); scanf("%d", &b); if (b < 0) printf("The value is negativen"); return 0; }
广告
这个程序接受用户输入的一个数字。然后它使用 if 语句测试该数字是否小于 0。如果小于 0,程序会打印一条消息。否则,程序不输出任何内容。程序中的 (b < 0) 部分就是布尔表达式。C 语言会评估这个表达式来决定是否打印消息。如果布尔表达式评估结果为真,那么 C 语言会执行 if 语句紧随其后的单行代码(或紧随 if 语句后的花括号内的代码块)。如果布尔表达式为假,那么 C 语言会跳过 if 语句紧随其后的单行或代码块。
这是一个稍微复杂一点的例子
#include <stdio.h> int main() { int b; printf("Enter a value:"); scanf("%d", &b); if (b < 0) printf("The value is negative\n"); return 0; }
在这个例子中,else if 和 else 部分也对零和正值进行评估。
这是一个更复杂的布尔表达式
if ((x==y) && (j>k)) z=1; else q=10;
这个语句表示:“如果变量 x 中的值等于变量 y 中的值,并且变量 j 中的值大于变量 k 中的值,则将变量 z 设置为 1,否则将变量 q 设置为 10。”你将在 C 语言程序中频繁使用这样的 if 语句来做出决策。通常,你做出的大多数决策都将像第一个例子那样简单;但偶尔,事情会变得更加复杂。
请注意,C 语言使用 == 来测试相等性,而使用 = 来赋值给变量。C 语言中的 && 代表布尔与运算。
以下是 C 语言中所有的布尔运算符
equality == less than < Greater than > <= <= >= >= inequality != and && or || not !
你会发现 while 语句和 if 语句一样容易使用。例如:
while (a < b) { printf("%d\n", a); a = a + 1; }
这会使得花括号内的两行代码重复执行,直到 a 大于或等于 b。while 语句的通常工作方式如右图所示。
C 语言也提供了 do-while 结构
#include <stdio.h> int main() { int a; printf("Enter a number:"); scanf("%d", &a); if (a) { printf("The value is True\n"); } return 0; }
C 语言中的 for 循环只是表达 while 语句的一种简写方式。例如,假设你在 C 语言中有以下代码:
x=1; while (x<10) { blah blah blah x++; /* x++ is the same as saying x=x+1 */ }
你可以将其转换为 for 循环,如下所示:
for(x=1; x<10; x++) { blah blah blah }
请注意,while 循环包含一个初始化步骤 (x=1)、一个测试步骤 (x<10) 和一个增量步骤 (x++)。for 循环允许你将这三个部分放在一行上,但你可以在这三个部分中放置任何内容。例如,假设你有以下循环:
a=1; b=6; while (a < b) { a++; printf("%d\n",a); }
你也可以将其放入 for 语句中:
for (a=1,b=6; a < b; a++,printf("%d\n",a));
这有点令人困惑,但它是可行的。逗号运算符允许你在 for 循环的初始化和增量部分(但不在测试部分)中分隔多个不同的语句。许多 C 程序员喜欢将大量信息打包到一行 C 代码中;但许多人认为这会使代码更难理解,所以他们会将其拆分。