如何在使用x进行计算时保留原始x的值
How do I retain value of original x while using x to do calculations?
我想在用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;
}
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
}
根据您发布的关于代码其余部分的链接,我不确定您希望我们如何处理它;这对我的回答没有什么不同。如果你需要更多的澄清,请在评论框中告诉我。
- 为什么"do while"循环不断退出,即使条件计算结果为 false?
- 递归函数计算序列中的平方和(并输出过程)
- (C++)分析树以计算返回错误值的简单算术表达式
- 我的字符计数代码计算错误.为什么
- 有根的二进制搜索树.保留与其父级的链接
- 在计算中使用二的幂有多有利可图
- 为多个会话保留XPtr
- 如何计算文件中的"columns"数?
- 计算排序向量的向量中唯一值的计数
- 如何使用 std::累积在 C++ 中计算总和立方体
- 使用Qt C++计算类似Git的SHA1哈希
- OpenCV C++.快速计算混淆矩阵
- cpp二进制搜索问题,计算给定数组中输入元素的出现次数
- C++如何计算用户输入的数字中的偶数位数
- 如何计算数据类型的范围,例如int
- 类似枚举的计算常量
- 计算每个节点的树高,帮助我解释这个代码解决方案
- 如何在使用x进行计算时保留原始x的值
- 在开发计算机上设置 dll 的完整性优先级是否会在安装生成中保留
- 复制PCL点云,同时保留组织或Ransac+曲面法线计算