gpt4 book ai didi

c= (getchar() != EOF)

转载 作者:行者123 更新时间:2023-12-05 01:30:04 30 4
gpt4 key购买 nike

我试图解决 K&R 中的问题 1.6。问题是——

  • 验证表达式getchar() != EOF 为 0 或 1。

我找到了一个可行的解决方案:

#include <stdio.h>

int main(){
int expr_val, c;
printf("Input a character and press enter: ");
expr_val = (getchar() != EOF);
printf("expr_val: %d\n", expr_val);

return 0;
}

当我输入任何内容时,它返回值 1。当我执行 EOF (Ctrl+D) 时,它返回值 0。

但是,当我用数字(比如 3)替换代码中的 EOF 时,程序无法按预期运行。如果我输入 5,它返回值 1。如果我输入 3,它也返回值 1。

根据我的理解,输入值 3 应该返回一个与我输入值 5 时得到的值不同的值。

(我只把EOF改成了3)

#include <stdio.h>

int main(){
int expr_val, c;
printf("Input a character and press enter: ");
expr_val = (getchar() != 3);
printf("expr_val: %d\n", expr_val);

return 0;
}

谁能告诉我为什么会这样?


谢谢大家,你们的回答都很清楚,很有帮助。通过将 EOF 更改为“3”或 51,代码可以正常工作。

最佳答案

你混淆了整数和字符。

3 不是字符 3,而是一个整数。 '3' 是 C 中的字符 3。

文档 here .

关于c= (getchar() != EOF),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42100778/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com