C语言字符输入输出的问题

#include
#include
#include
#include
using namespace std;
int main(){
int ch;
while(ch=getchar()!='\n'){
putchar(ch);
}
putchar(ch);
return 0;
}
当我输入a[enter]时,第一个putchar(),不知道输出了一个什么鬼,第二个正常输出a。
这和书本上面的想去甚远呀,这是为什么?

因为你少了一个括号
!=的优先级是大于=的

 #include<stdio.h>
#include<stdio.h>
#include<stdlib.h>
#include<iostream>
using namespace std;
int main(){
    int ch;
    while ((ch = getchar()) != '\n'){
        putchar(ch);
    }
    putchar(ch);
    return 0;
}