while循环是没有初始化和循环更新的for循环。就类似
for(没有第一部分; 判断语句; 没有循环更新){执行语句};
因此,while只能进行判断,符合判断,则执行循环,不符合,则结束循环。
代码:
//输出遇到空字符为止 #include<iostream> int main() { using namespace std; string a; a[0]= char('z'); //初始a[0]为小写的字母z while (a[0] != '\0') //遇见空字符为止,注意,空字符ASCII编码为0 { cout << a[0]; //输出a[0],不换行 a[0] = a[0] - 1; //a[0]每次都比之前在ASCII编码少1、这行实际上就相当于循环更新 } system("Pause"); return 0; }
输出:
(以上是图片,如果看不到,说明不支持显示图片)
大概情况就是从zyx这样一直往下输出,输出各种字符。之所以发图片,是因为赋值到word里面出现换页了(可能有换行符还有其他的吧)
结论:
①while的用法和for很相近,判断语句同样是判断表达式的值是flase还是true,只不过可以认为,是将循环更新放到循环体之中了。
for、while和分号:
在for和while的循环语句中,格式是这样的:
for/while (判断语句,for还带初始化和循环更新语句) ① {循环体} ②
需要注意的是:
在①的位置,不能加入分号,如果加入,循环会这样认为,例如:
for(判断) 空语句 ;{循环体}
他会认为,判断成立,于是执行空语句,又因为空语句不可能更新循环,因此,会无限执行判断语句,进入一个死循环。
如果判断不成立,那么不执行空语句,执行一次循环体,然后执行循环体后面的语句。
这样的话,就起不到循环作用了。
在②的位置,可以加入分号,但也可以不加入。因为在大括号里面,最后一行语句应该加入分号,这样的话,假如执行完循环,多一个分号,相当于多一个空语句,并没有什么影响。
结论:
小括号() 和 大括号{}之间,一般情况下,禁止加入分号。
注:(七十三)中有利用空语句进行循环的一种巧妙办法