在C ++中更新定义值

时间:2015-07-11 08:50:02

标签: c++ visual-c++ user-defined-functions

我是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);

请给我一些建议。

3 个答案:

答案 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

Source

实际上,您应该将定义视为单独的语言,除非您真的知道自己在做什么,否则不要触摸它们。

注意:我在这个答案中使用的代码对于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;