奇怪的回报;一行函数返回一个int
我现在正在学习C语言,并且正在使用一本相当好的书来学习(它使得事情变得很容易理解......)但是我遇到了一些我无法理解的东西回绕到我的头,想的解释是什么代码这一行是“做” ...奇怪的回报;一行函数返回一个int
这里是功能:
int yes_no(char *question)
{
char answer[3];
printf("%s? (y/n): ", question);
fgets(answer, 3, stdin);
return answer[0] == 'y';
}
从我了解C语言编程至今
所以,这个函数应该返回一个int,它会在这个函数之外的地方创建一个字符串,在它的末尾添加一个“?(y/n):”,并将这个问题打印到屏幕上,然后允许用户输入是或否,并存储在一个名为“答案”的数组.......但这看起来像它会返回一个字符...或东西....不是一个整数....为什么有一个=='Y'在回线?对于我的生活,我无法弄清楚这个函数的返回行是在做什么。一些帮助将是mucis gracias。
answer[0] == 'y'
被评估为bool,所有bools将被提升为int,并给你1或0作为返回值。 检查: Can I assume (bool)true == (int)1 for any C++ compiler?
“'answer [0] =='y''被评估为bool” - 不,它是一个“int”。 – 2013-09-27 16:20:04
问题是c,而不是C++ – crashmstr
,但是这看起来像它会返回一个字符...什么的....不是int
没有,但是这不会是一个问题,无论是。积分类型可以隐式转换为另一种类型,因此返回int
的函数返回char
是完全正确的。
除此之外,C中的比较运算符产生一个int
- 如果比较中的premissa为true,则为1,否则为零。该功能主要测试输入字符串的第一个字符是否为'y'
。
看到你最近的编辑开始,你是什么返回是比较结果[0] ==“y”,它是一个整数。
++++++++++
你的函数接收一个参数,一个指向它,我们可以假设是一个字符串一个字符。
然后,您打印该参数后跟随(y/n)并等待用户输入标准输入。
当你得到的输入,你检查它的第一个字符,如果是Y返回1〜真,如果它不是你返回0〜虚假
好吧,我看到了,我只是还在这里,并且只是用来查看'if'语句中的比较。我认为那是你唯一使用它们的地方。我不知道在你使用它们的任何地方你仍然可以得到1或0的回报。这很好知道!谢谢你的提示! –
你应该阅读介绍C语言教程。 – 2013-09-27 16:20:57