我是C ++的学习者,我现在正在完成作业,而我似乎无法更新我的价值。
必须使用define来取得平衡:
#define balance 5000.00
在声明的最后,我似乎无法更新余额:
printf("Deposit Successful!\nYou have deposited the following notes : \n");
printf("RM100 x %d = RM %.2f\n",nd100,td100);
printf("RM 50 x %d = RM %.2f\n",nd50,td50);
printf("RM 20 x %d = RM %.2f\n",nd20,td20);
printf("RM 10 x %d = RM %.2f\n\n",nd10,td10);
dtotal=td100+td50+td20+td10;
printf(" TOTAL = RM %.2f\n\n",dtotal);
newbalance=5000+dtotal;
printf("Your current balance is RM %.2f\n\n",newbalance);
我想更新我的newbalance
以成为我的余额,以便我可以继续我的提款。
我可以展示一下我的提款
printf("\nWithdrawal Successful!\n");
printf("%d notes x RM 50 = RM%d.00\n",wnotes,wamount);
printf("Your current balance is RM %.2f\n\n",newbalance);
请给我一些建议。
答案 0 :(得分:1)
#define
是对所谓的预处理器的指令。这是在实际编译之前通过文本替换来转换程序的源代码。
当你写下这样的东西时:
#define value 42;
printf("%d", value);
然后编译器有效地看到
printf("%d", 42);
这完全发生在编译时(或更好的编译时),并且与程序的运行时无关,即它何时被执行。
你所寻找的是变量,虽然我建议寻找一本教程或书籍,因为这是该语言的一个非常基本的方面,并且解释这里的一切都超出了这个答案的范围。它们允许在程序执行期间改变值:
int main(int argc, char ** argc) {
int counter = 0;
for (; counter < 10; ++counter ) {
printf("counter is %d\n", counter);
}
return 0;
}
为了完整起见,您实际上可以在源代码中的某处更改定义的含义:
#undef SOMETHING
#define SOMETHING 21
// for the rest of this TEXT (!) every occurrence
// of SOMETHING will be replaced with 21
实际上,您应该将定义视为单独的语言,除非您真的知道自己在做什么,否则不要触摸它们。
注意:我在这个答案中使用的代码对于C和C ++编译器来说都没问题。你声明你正在学习C ++,但是你不应该使用printf
而是使用iostream
的设施,例如
std::cout << "Hello World" << std::endl;
答案 1 :(得分:1)
您需要了解它是如何工作的以及C / C ++语言中的预处理器是什么。在首次运行程序之前使用预处理程序。它在将程序(文本)转换为机器代码时使用。你想要的是在预处理器/编译器任务之外 - 它是你程序本身的一部分。
因此,如果您希望在程序运行期间更改某些内容,则通常需要使用以下变量:
double balance = 5000;
@jacdeh在评论中提出建议。
答案 2 :(得分:0)
其班级代表,Veron
您应该使用变量而不是定义用于存储余额的常量。由于必须在交易完成后更新该值。
根据所述的任务,平衡的初始值始终是恒定的并且以相同的值开始,不再被修改,所以
#define INITIAL_BALANCE 5000.0
在main函数中,您可以声明一个非常量变量并将初始余额(INITIAL_BALANCE的值)分配给变量,以便您始终可以更新余额:
double balance = INITIAL_BALANCE;