在C++里支持else if 这种分支条件判断吗?

ActorKeyy 2012-10-11 12:27:59
编译环境:32位 XP, VC++ 6.0
我在写下面这个代码,其中函数cm用于计算v1 的 v2次幂,当我输入 2,3时正确,结果为8,但是当我输入2 , -3时,却显示为1了。我经过调试发现,当执行到下面注释部分条件后的语句,v2就直接为0了(开始的时候v2还是等于-3的)。请大家帮忙看看。


#include <iostream>
using namespace std;

int main()
{
double cm(int v1, int v2);
cout << "Enter 2 int numbers:" << endl;
int a,b;
cin >> a >> b;
double result;
result = cm(a, b);
cout << "The result is: " << result << endl;
return 0;
}

double cm(int v1, int v2)
{
double temp = 1;
if ( v2 > 0)
{
while ( v2 != 0 )
{
temp *= v1;
--v2;
}
}
else if(v2 = 0)
temp = 1;
else
{
v2 = -v2; //这里的时候,v2 就直接为0了,在这前面显示一直为-3的。
while ( v2 != 0 )
{
temp *= v1;
--v2;
}
temp = 1/temp;
}
return temp;
}
...全文
405 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ActorKeyy 2012-10-11
  • 打赏
  • 举报
回复
虽然我自己发现了,还是谢谢大家的建议。
newtee 2012-10-11
  • 打赏
  • 举报
回复
if(v2 = 0) 建议写成这样 if(0=v2) 这样就报错了
Gloveing 2012-10-11
  • 打赏
  • 举报
回复
当然!
注意编码时候的细节+学会调试找错
谜一样的Coder 2012-10-11
  • 打赏
  • 举报
回复
if()语句中的括号是用于判断用的,不是用于赋值的不能写成 “=”;()中应该写成“==”否则即使通过了编译,输出的结果也会很怪异!(在这里就不帮你改代码了,自己改过来映像深一点!)
armsword 2012-10-11
  • 打赏
  • 举报
回复
v2 == 0
baichi4141 2012-10-11
  • 打赏
  • 举报
回复
else if(v2 = 0)
【v2 = 0】

找错误的时候,别先找语言/编译器/电脑/老天爷的错,先从自己身上找起

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧