C语言中,while()语句中使用赋值语句

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;//返回校验和
}
相关文章
相关标签/搜索