bor*_*ree 5 c logic boolean-logic boolean-expression
一个程序,每行打印一个输入的单词.
int main() {
int c;
while ((c=getchar()) != EOF) {
if (c== ' ' || c== '\n' ||c == '\t')
putchar('\n');
else {
putchar(c);
}
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
上面的程序正确打印结果,每行一个字.在相应地改变条件之后,我期望下面的程序也每行打印一个单词.但是我没有得到正确的结果.我犯了一些愚蠢的错误还是错了?
int main() {
int c;
while ((c=getchar()) != EOF) {
if (c != ' ' || c != '\n' || c != '\t')
putchar(c);
else {
putchar('\n');
}
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
MBy*_*ByD 16
条件的正确变化是:
if (!(c == ' ' || c == '\n' || c == '\t'))
Run Code Online (Sandbox Code Playgroud)
要么
if (c != ' ' && c != '\n' && c != '\t')
Run Code Online (Sandbox Code Playgroud)
参见德摩根定律