C语言中,while()语句括号内可以是赋值语句吗?

 我来答
风若远去何人留
推荐于2017-10-01 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450136
专业C/C++软件开发

向TA提问 私信TA
展开全部

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;//返回校验和
}
天外流星145
2014-06-24
知道答主
回答量:29
采纳率:0%
帮助的人:23.8万
展开全部
可以,比如:
int a=0;
while(a=1)//这样会造成死循环,因为括号里的最终值为1,非0,代表真,所以会一直循环
{

}
追问
int  m,n = 100 ; while ( m= 1 )  n =n+m ; 那这个循环无数次?
追答
是的,因为m的值始终未被修改一直都是1,所以会循环无数次。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
泥雅惠24
2018-12-03 · TA获得超过759个赞
知道答主
回答量:97
采纳率:71%
帮助的人:10.6万
展开全部

可以,不但可以还可以写多个语句,

int a=5,b=2; 
  while(b=a,b-=1)
  {
    cout<<a<<b<<endl;
    a-=2;
  } 
   cout<<a<<b<<endl;
   结果为54 32 10
   就是只判断最后一句,两句之间用,不能用;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式