while()语句括号中是一个逻辑表达式,用以判断while循环是否须要继续执行。能够是赋值语句。函数
while循环的通常格式为:spa
while(expr)指针
{code
;//bodyblog
}ci
其中用来判断循环条件的expr能够是任意表达式。当其是赋值语句的时候,含义为:先执行赋值语句,而后对左值进行判断。若是左值为0则expr为假,while退出;不然expr为真,while继续循环。字符串
不过直接用赋值语句作expr时,编译器可能为认为赋值操做符=是等于判断符==的误写,这时编译器可能会报一个警告(warning),编译器是否报警,及报警告仍是错误(error)取决于编译器设置。为避免这种状况,能够用while((var = expr))的形式,告知编译器就是要先赋值再判断,编译器就不会理会了。get
下面是举一个例子用来辅助说明。编译器
函数功能,将参数字符串中的全部值按照ascii码进行累加,获取校验和,溢出后只取低字节值。it
char sum(char* p) { char c; char sum = 0; while((c = *p ++))//读取字符串中的字符,直到字符串结尾。 这里用的就是一个赋值的方式。先把*p赋值给c,而后执行指针移位,再判断c的值,若是c值为0,表明字符串结束,退出循环。 { sum+=c;//累加值,不考虑溢出。 } return c;//返回校验和 }