#import <Foundation/Foundation.h>
typedef struct{
float exchangeRate;
float theBudget;
float euroTransaction;
}budget;
budget vacationBudget;
budget vacationBudgetEngland;
int main(int argc, const char * argv[])
{
vacationBudget.exchangeRate=1.2500;
vacationBudget.theBudget=1000.00;
double numberDollars=100;
double numberEuros=100;
第二个qs - 对于ERROR GIVEN下面的两行:隐式声明函数spendDollar和chargeEuros。在C99中无效。隐式声明是什么意思?
spendDollar(numberDollars);
NSLog(@"converting %.2f US dollars from a budget of 1000 into euros leaves %.2f",numberDollars,vacationBudget.theBudget);
chargeEuros(numberEuros);
NSLog(@"cnverting %.2f euros leaces %.2f",numberEuros,vacationBudget.theBudget);
return 0;
}
void spendDollar (dollars){
vacationBudget.theBudget-=dollars;
}
void chargeEuros (euros){
vacationBudget.euroTransaction=euros*vacationBudget.exchangeRate;
vacationBudget.theBudget-=vacationBudget.euroTransaction;
}
HI GUYS!我试图从“客观C傻瓜”中学习目标C,所以我有几个问题。我对2-3件事感到困惑 - 希望你能提供帮助:D提前致谢
如果你们能用“NOOB”语言解释那将会很棒。
为什么我需要函数原型用于底部写的函数?如果在main中执行的执行不会将值转移到没有原型的函数? ERROR GIVEN-收取欧元和花费美元的冲突类型
上面的代码!
还在书中印刷的代码中!对于下面的2功能,它说它应该是双倍的美元和双欧元的参数。我想知道为什么我必须再次宣布加倍。没有在python中这样做。(我知道一点python)
答案 0 :(得分:1)
因为否则,在调用时,编译器不知道函数返回什么类型,或者它接受什么类型的参数,并且它需要。
假设你指的是“隐式声明”错误,这只是从(1)开始,你得到它是因为你试图在用原型声明它之前调用一个函数,或者首先定义函数
C不是Python。编译器需要知道每个参数的类型,因为不同的类型表示不同。例如,int
可能需要4个字节,而double
可能需要8个字节。在确定您需要传递给函数的确切内容时,这是非常重要的信息。