任何人都可以解释下面的代码,请一步一步地做些什么。我知道它定义了一个函数及其输入,但scanf
做了什么,为什么#include<stdio.h>
main()
{
int input,itemno,input2;
int name1,price1,name2,price2,name3,price3;
printf("enter input:\n");
scanf("%d", &input);
if(input==1)
{
printf("enter number of items:\n");
scanf("%d",&itemno);
if(itemno<=3)
{
printf("enter name and age:\n");
scanf("%d %d\n %d %d\n %d %d\n",&name1,&price1,&name2,&price2,&name3,&price3);
}
else
printf("you can only enter 3 students");
}
printf("press 1 to enter again: \n");
scanf("%d",&input2);
if(input2==1)
{
printf("hey");
}
}
和四<{em>} (+)
中有三个Int
在plus
的类型中的s,而Int
的代码中似乎只有只有3个参数?
plusplus
答案 0 :(得分:5)
+
是加法运算符。将运算符放在括号中,如(+)
,指的是加法函数本身,而不是使用+
在现场添加两个数字。基本上,这个:
plus = (+)
相当于:
plus a b = a + b
无论哪种方式,它都将plus
定义为+
的同义词。
在Haskell中,->
用于分隔参数的类型,以及返回值。所以,
plus :: Int -> Int -> Int
是一个函数,它需要两个Int
并返回一个Int
。
plusPlus :: Int -> Int -> Int -> Int
是一个函数,它需要三个Int
并返回一个Int
。
参数和返回值的语法相同的原因是currying。
真的很迂腐,
plus :: Int -> Int -> Int -- ~ Int -> (Int -> Int)
是一个带Int
的函数,返回一个Int
并返回Int
的函数。
plusPlus :: Int -> Int -> Int -> Int -- ~ Int -> (Int -> (Int -> Int))
是一个函数,它接受Int
,并返回一个带Int
的函数,并返回一个带Int
并返回Int
的函数。 / p>
实际上,将Haskell函数称为采用多个参数很方便。但从技术上讲,Haskell函数总是采用一个参数。参数类型位于->
的左侧,返回类型位于->
的右侧,但返回类型本身可能是另一个函数。