为什么返回变量的值会发生变化?

0 c return

我正在研究一个Linux代理程序,我遇到了这个问题.这是我正在努力的代码.

while(n = Rio_readlineb_w(&rio_client, buf, MAXLINE) > 0){
  printf("%d\n", n);
  Rio_writen_w(serverfd, buf, n);
}
Run Code Online (Sandbox Code Playgroud)

这是'Rio_readlineb_w'的包装函数

ssize_t Rio_readlineb(rio_t *rp, void *usrbuf, size_t maxlen)
{
  ssize_t rc;
  if((rc = rio_readlineb(rp, usrbuf, maxlen)) < 0 )
  printf("Rio_readlineb error");
  printf("%d\n", rc);
  return rc;
}
Run Code Online (Sandbox Code Playgroud)

变量'rc'表示rio_readlineb函数读取的字符数.在包装函数中使用printf,我检查了rc正是读取的字符数.但是,上部while语句的变量"n"始终为1.我无法找出错误.你觉得回报价值怎么改变了?

int*_*jay 9

这是运营商优先权的问题.

while(n = Rio_readlineb_w(&rio_client, buf, MAXLINE) > 0){
Run Code Online (Sandbox Code Playgroud)

应该:

while((n = Rio_readlineb_w(&rio_client, buf, MAXLINE)) > 0){
Run Code Online (Sandbox Code Playgroud)

否则,您将比较结果(0或1)分配给n.