我不知道为什么我的变量不断重置为 0
I am clueless why my variable keeps resetting to 0?
我正在C++自动取款机上学习,但我偶然发现了一些我无法说明为什么会发生这种情况的东西。无缘无故,我在这里寻找我正在尝试做的事情的确切解决方案,只是一个解释将不胜感激!
这是关于他的一段代码:
int Factorial(int x) {
if (x = 0) {
x = 1;
} else {
int sum = 1;
for (int counter = 1; counter <= x; ++counter) {
sum *= counter;
}
x = sum;
}
return x;
}
因此,让我们假设我用 int 5 (Factorial(5(( 调用 Factorial((。不知何故,一旦程序传递了 if (x = 0( 语句,它就会将其 (x( 重置为 0,至少这是我在 Visual Studio 中可以看到的全部内容,因为它也从 if 语句直接跳跃到总和整数的声明。
我希望有些人能澄清一下这里到底发生了什么。
提前谢谢你!
if(x = 0)
需要
if(x==0)
目前,您正在将x
分配给 0,然后检查结果 ( 0
( 是否true
,这永远不会,因为0
是false
。
此外,修改参数变量也是不好的做法。您可以通过更改返回值来简化代码并避免这样做:
int Factorial(int x) {
if (x == 0) {
return 1;
}
int sum = 1;
for (int counter = 1; counter <= x; ++counter) {
sum *= counter;
}
return sum;
}
正如其他答案所述,这是因为您需要更改
if (x = 0)
自
if(x == 0)
一般来说,为避免这种情况,建议这样做
if(0 == x)
因为在这种情况下,如果您只有一个"="而不是两个,则会抛出错误
你自己做。 =
是分配,==
是比较。
if (x = 0) {
应该是
if (x == 0) {
相关文章:
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- 为什么我的代码在输出中增加了93天
- 为什么我的for循环不能正确获取argv
- 当我在main中声明了我的2d数组时,为什么我的程序会退出
- 为什么我的 std::ref 无法按预期工作?
- 为什么我的删除节点函数实际上没有删除节点?
- 为什么我的 IExtractIcon 处理程序没有被调用?
- 为什么我的多线程作业队列崩溃
- 为什么我的排序算法会更改数组值
- 为什么我的变量没有更新,我的 LED 没有亮起?
- 为什么我的程序在for循环中k=0时返回垃圾值
- 为什么我的点没有在 OpenGL 中绘制鼠标所在的位置?
- 为什么我的共享库中存在展开符号
- 为什么我的C++代码中出现'Segmentation Fault: 11'行?
- 为什么我的递归函数按降序打印,然后按升序打印?
- 为什么我的 heap.h 文件给我一个LNK2001错误?
- 为什么我的好友类无法访问私人会员?
- 为什么我的C++程序的程序集输出充满了 .ascii,没有汇编代码?
- 为什么我的模板化函数需要从一个迭代器转换到另一个迭代器?