奇怪的回报;一行函数返回一个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。

+0

你应该阅读介绍C语言教程。 – 2013-09-27 16:20:57

answer[0] == 'y'被评估为bool,所有bools将被提升为int,并给你1或0作为返回值。 检查: Can I assume (bool)true == (int)1 for any C++ compiler?

+1

“'answer [0] =='y''被评估为bool” - 不,它是一个“int”。 – 2013-09-27 16:20:04

+1

问题是c,而不是C++ – crashmstr

,但是这看起来像它会返回一个字符...什么的....不是int

没有,但是这不会是一个问题,无论是。积分类型可以隐式转换为另一种类型,因此返回int的函数返回char是完全正确的。

除此之外,C中的比较运算符产生一个int - 如果比较中的premissa为true,则为1,否则为零。该功能主要测试输入字符串的第一个字符是否为'y'

返回回答[0] =='y';

实际上将返回一个int值,1,如果答案以“Y”和0,如果答案是其他任何东西,没有用“Y”

+0

对不起,计算结果为1或0的整数值 – orgtigger

看到你最近的编辑开始,你是什么返回是比较结果[0] ==“y”,它是一个整数。

++++++++++

你的函数接收一个参数,一个指向它,我们可以假设是一个字符串一个字符。

然后,您打印该参数后跟随(y/n)并等待用户输入标准输入。

当你得到的输入,你检查它的第一个字符,如果是Y返回1〜真,如果它不是你返回0〜虚假

+0

好吧,我看到了,我只是还在这里,并且只是用来查看'if'语句中的比较。我认为那是你唯一使用它们的地方。我不知道在你使用它们的任何地方你仍然可以得到1或0的回报。这很好知道!谢谢你的提示! –