如何在使用x进行计算时保留原始x的值

How do I retain value of original x while using x to do calculations?

本文关键字:计算 保留 的值 原始      更新时间:2023-10-16

我想在用X进行计算时保留X的原始值,我该怎么做?请务必提出建议!干杯//插件我通过有用的stackoverflowpeeps找到了问题的答案。我最初认为x的值会在每次I模或除以它时发生变化。然而,他们通过传递值向我解释了这一点!

请参阅C++通过LUHN公式验证信用卡(循环和SumToken错误),看看我是如何使用该功能的。

int newDigits (int x)
{
int newNumber, length;
int secondDigit, fourthDigit;
secondDigit = x%1000/100*2;
fourthDigit = x%10*2; // Edited as per advised
if ((secondDigit<10)&&(fourthDigit<10))
{
newNumber = (x%10000/1000*1000)+(secondDigit*100)+(x%100/10*10)+(fourthDigit);
}
else if ((secondDigit>10)&&(fourthDigit<10))
{
newNumber = (x%10000/1000*10000)+(secondDigit*100)+(x%100/10*10)+(fourthDigit);
}
else if ((secondDigit<10)&&(fourthDigit>10))
{
newNumber = (x%10000/1000*10000)+(secondDigit*1000)+(x%100/10*100)+(fourthDigit);
}
else if ((secondDigit>10)&&(fourthDigit>10))
{
newNumber = (x%10000/1000*100000)+(secondDigit*1000)+(x%100/10*100)+(fourthDigit);
}
return newNumber;
}
c++中的赋值通常是由值驱动的。语句int x = y;y的值复制到x中。也就是说,x现在具有y在被分配时所具有的值。在分配给x之后,对y的进一步更改将不会更改x的值。如果希望x永远引用y的值,则需要使用一个用"与"表示的引用,如int & x = y;

在您的情况下,int newDigits (int x)x作为您在呼叫newDigits时提供的内容的副本。您在newDigits中所做的任何操作都不会影响newDigits的原始值。

使用const只是意味着您不能修改该值。const int x将阻止您更改x的当前值。这里没有必要保留给newDigits的值,因为在这种情况下我们已经无法修改它了。如果x引用(int & x),那么添加const确实可以防止意外更改newDigits的原始值。

请注意,在您的示例中,x实际上根本没有被修改。

首先,您不会在函数int newDigits (int x)中的任何位置修改x的值。您只是在使用存储在x中的值来执行其他计算;这些计算根本不会改变x中存储的值。代码中使用x的行:

secondDigit = x%1000/100*2;
fourthDigit = x%10*2;
newNumber = (x%10000/1000*1000)+(secondDigit*100)+(x%100/10*10)+(fourthDigit);
newNumber = (x%10000/1000*10000)+(secondDigit*100)+(x%100/10*10)+(fourthDigit);
newNumber = (x%10000/1000*10000)+(secondDigit*1000)+(x%100/10*100)+(fourthDigit);
newNumber = (x%10000/1000*100000)+(secondDigit*1000)+(x%100/10*100)+(fourthDigit);

不更改x的值;x在这些操作结束时是相同的。只有当你做了类似的事情时,x的值才能改变

x+=

x++

x-=

x*=

x/=

等等。。。(假设a为常数整数)

只需执行以下操作:

int a = (x + 2) / x;

不会改变CCD_ 28的值。

但是,如果您想确保x中传递的值被保存,那么您可以通过两种方式来完成:


第一种方法是在x前面使用const,就像您在问题中提到的那样。这解决了在整个函数中保留x值的问题;但是,这也意味着不能更改x的值(如果必须的话)。在这种情况下,除非你完全确定你不会也不想修改x,否则你可以使用这个方法。如果您决定使用常量,则将函数声明更改为:

int newDigits (const int x)

第二种方法是在函数开始时简单地声明int类型的另一个变量,并将其设置为x,如:

int newDigits (int x)
{
int y = x; // This way, you do can modify x knowing that you can look back to y if you need the original value

// Rest of the function code
}

根据您发布的关于代码其余部分的链接,我不确定您希望我们如何处理它;这对我的回答没有什么不同。如果你需要更多的澄清,请在评论框中告诉我。