zoukankan      html  css  js  c++  java
  • C语言中,while()语句中使用赋值语句

    while()语句括号中是一个逻辑表达式,用以判断while循环是否需要继续执行。可以是赋值语句。

    while循环的一般格式为:

    while(expr)

    {

        ;//body

    }

    其中用来判断循环条件的expr可以是任意表达式。当其是赋值语句的时候,含义为:先执行赋值语句,然后对左值进行判断。如果左值为0则expr为假,while退出;否则expr为真,while继续循环。

    不过直接用赋值语句做expr时,编译器可能为认为赋值操作符=是等于判断符==的误写,这时编译器可能会报一个警告(warning),编译器是否报警,及报警告还是错误(error)取决于编译器设置。为避免这种情况,可以用while((var = expr))的形式,告知编译器就是要先赋值再判断,编译器就不会理会了。

    下面是举一个例子用来辅助说明。

    函数功能,将参数字符串中的所有值按照ascii码进行累加,获取校验和,溢出后只取低字节值。

    char sum(char* p)
    {
        char c;
        char sum = 0;
        
        while((c = *p ++))//读取字符串中的字符,直到字符串结尾。 这里用的就是一个赋值的方式。先把*p赋值给c,然后执行指针移位,再判断c的值,如果c值为0,代表字符串结束,退出循环。
        {
            sum+=c;//累加值,不考虑溢出。
        }
        
        return c;//返回校验和
    }
     
  • 相关阅读:
    Lua如何管理”package”
    Lua: 好的, 坏的, 和坑爹的
    Lua中metatable和__index的联系
    Lua5.3 注册表 _G _ENV
    采访 Lua 发明人的一篇文章
    Lua的函数调用和协程中,栈的变化情况
    理解 Lua 的那些坑爹特性
    高性能 Lua 技巧(译)
    LLVM每日谈21 一些编译器和LLVM/Clang代码
    上Https 和 http 差分
  • 原文地址:https://www.cnblogs.com/heyijing/p/6003183.html
Copyright © 2011-2022 走看看