我现在正在学习C并且正在使用一本相当不错的书来学习(它使得事情很容易理解......)但是我遇到了一些我似乎无法理解的东西,并且会就像解释这一特定代码行“正在做什么”...
这是功能:
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):”并且将该问题打印到屏幕上,然后允许用户输入yes或no并将其存储在一个名为“answer”的数组中......但这看起来它会返回一个char ...或者其他东西....一个int ....为什么返回行中有一个=='y'?对于我的生活,我无法弄清楚这个函数的返回行是做什么的。一些帮助将是muchas gracias。
答案 0 :(得分:2)
但看起来它会返回一个char ......或者其他东西......而不是int
不,但这也不是问题。积分类型可以隐式转换为另一个,因此从声明为返回char
的函数返回int
是完全正常的。
除此之外,C中的比较运算符产生int
- 如果比较中的premissa为真,则为1,否则为0。此函数基本上测试输入的字符串的第一个字符是否为'y'
。
答案 1 :(得分:1)
返回答案[0] =='y';
实际上会返回一个int,如果答案以'y'开头,则返回1;如果答案是其他没有以'y'开头的其他内容,则返回0
答案 2 :(得分:1)
看到你最近的编辑,你要返回的是比较答案[0] ==“y”的结果,它是一个整数。
++++++++++
你的函数接收一个参数,一个指向char的指针,我们可以假设它是一个字符串。
然后打印该参数后跟(y / n)并等待stdin中的某些用户输入。
当你得到那个输入时,你检查它的第一个字符,如果它是Y你返回1~true,如果它不是你返回0~false
答案 3 :(得分:0)
answer[0] == 'y'
被评估为bool,所有bool将被提升为int,并给你1或0作为返回值。
检查一下:
Can I assume (bool)true == (int)1 for any C++ compiler?