原文:Exercise 11: While-Loop And Boolean Expressions
你已经初步了解C语言如何处理循环,但是你可能不是很清楚布尔表达式i < argc是什么。在学习while循环之前,让我先来对布尔表达式做一些解释。
i < argc
while
在C语言中,实际上没有真正的“布尔”类型,而是用一个整数来代替,0代表false,其它值代表true。上一个练习中表达式i < argc实际上值为1或者0,并不像Python是显式的Ture或者False。这是C语言更接近计算机工作方式的另一个例子,因为计算机只把值当成数字。
false
true
Ture
False
现在用while循环来实现和上一个练习相同的函数。这会让你使用两种循环,来观察两种循环是什么关系。
#include <stdio.h> int main(int argc, char *argv[]) { // go through each string in argv int i = 0; while(i < argc) { printf("arg %d: %s\n", i, argv[i]); i++; } // let's make our own array of strings char *states[] = { "California", "Oregon", "Washington", "Texas" }; int num_states = 4; i = 0; // watch for this while(i < num_states) { printf("state %d: %s\n", i, states[i]); i++; } return 0; }
你可以看到while循环的语法更加简单:
while(TEST) { CODE; }
只要TEST为true(非0),就会一直运行CODE中的代码。这意味着如果要达到和for循环同样的效果,我们需要自己写初始化语句,以及自己来使i增加。
TEST
CODE
for
i
输出基本相同,所以我做了一点修改,使你可以看到它运行的另一种方式。
$ make ex11 cc -Wall -g ex11.c -o ex11 $ ./ex11 arg 0: ./ex11 state 0: California state 1: Oregon state 2: Washington state 3: Texas $ $ ./ex11 test it arg 0: ./ex11 arg 1: test arg 2: it state 0: California state 1: Oregon state 2: Washington state 3: Texas $
在你自己的代码中,应优先选择for循环而不是while循环,因为for循环不容易崩溃。下面是几点普遍的原因:
int i
i++
i--
argc
argv
states
Copyright© 2013-2020
All Rights Reserved 京ICP备2023019179号-8