Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/141.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么我的while语句不起作用?_C++_Pointers_While Loop - Fatal编程技术网

C++ 为什么我的while语句不起作用?

C++ 为什么我的while语句不起作用?,c++,pointers,while-loop,C++,Pointers,While Loop,我认为我做的每件事都是正确的……但很明显,我遗漏了一些东西,我的while语句似乎从未被输入。请帮忙 #include <iostream> using namespace std; void swap(int *aPtr, int *bPtr) { int holder=0; holder=*aPtr; *aPtr=*bPtr; *bPtr=holder; } void instantiator(int *dPtr,int *xPtr,int *

我认为我做的每件事都是正确的……但很明显,我遗漏了一些东西,我的while语句似乎从未被输入。请帮忙

#include <iostream>
using namespace std;


void swap(int *aPtr, int *bPtr)
{
    int holder=0;
    holder=*aPtr;
    *aPtr=*bPtr;
    *bPtr=holder;
}
void instantiator(int *dPtr,int *xPtr,int *yPtr,int a)
{
    *dPtr=a;
    *xPtr=1;
    *yPtr=0;
}
void cruncher(int *xPtr,int *dPtr, int *aPtr,int *yPtr,int *bPtr)
{
    int x1=0,x2=1,y1=1,y2=0,r=0,q=0;
    while(*bPtr>0)
        {
            q=*aPtr/(*bPtr);
            r=*aPtr%*bPtr;
            *xPtr=x2-(q*x1);
            *yPtr=y2-(q*y1);
            *aPtr=*bPtr;
            *bPtr=r;
            x2=x1;
            x1=*xPtr;
            y2=y1;
            y1=*xPtr;
            cout<<q<<" "<<r<<" "<<*xPtr<<" "<<*yPtr<<" "<<*aPtr<<" "
                <<*bPtr<<" "<<x2<<" "<<x1<<" "<<y2<<" "<<y1<<endl;
            }
    cout<<endl;
    *dPtr=*aPtr;
    *xPtr=x2;
    *yPtr=y2;

}
int main() {
    int a=4864,b=3458,d,*aPtr,*bPtr,*dPtr,x,*xPtr,y,*yPtr;
    aPtr=&a;
    bPtr=&b;
    dPtr=&d;
    xPtr=&x;
    yPtr=&y;

    if(b=0)
        instantiator(dPtr,xPtr,yPtr,a);

    if (a<b)
        swap(aPtr,bPtr);

    cruncher(xPtr,dPtr,aPtr,yPtr,bPtr);
    cout<<d<<" "<<x<<" "<<y;


    return 0;
}
#包括
使用名称空间std;
无效掉期(int*aPtr,int*bPtr)
{
int holder=0;
持有人=*aPtr;
*aPtr=*bPtr;
*bPtr=持有人;
}
无效实例化器(int*dPtr、int*xPtr、int*yPtr、inta)
{
*dPtr=a;
*xPtr=1;
*yPtr=0;
}
void cruncher(int*xPtr、int*dPtr、int*aPtr、int*yPtr、int*bPtr)
{
int-x1=0,x2=1,y1=1,y2=0,r=0,q=0;
而(*bPtr>0)
{
q=*aPtr/(*bPtr);
r=*aPtr%*bPtr;
*xPtr=x2-(q*x1);
*yPtr=y2-(q*y1);
*aPtr=*bPtr;
*bPtr=r;
x2=x1;
x1=*xPtr;
y2=y1;
y1=*xPtr;

如果(b=0)
=
是一个赋值操作,则需要使用
=
进行比较。如果(b=0)
如果(b=0)
是一个赋值操作,则将其更正为
=
进行比较。如果(b=0),则将其更正为

您的
循环中的测试是
*bPtr>0
,但您在
main
中将
b
设置为
0
(使用
if(b=0)
)然后将指针作为
bPtr
传递给它。尝试修复
main
中的
if
语句,看看这是否会改变行为。

循环中的测试是
*bPtr>0
,但您在
main
中将
b
设置为
0
(使用
if(b=0)
)然后将指针作为
bPtr
传递给它。尝试修复
main
中的
if
语句,看看这是否会改变行为。

if(b=0)
line不会做你想做的事——它将
b
设置为
0
,然后再也不会进入
if
语句的主体。我们是否正在尝试进入混淆竞争?if(b=0)
line不会执行您想要的操作--它将
b
设置为
0
,然后再也不会进入
if
语句的主体。我们是否正在尝试进入混淆竞争?此外,大多数编译器会警告此常见错误。请确保启用了编译器警告,并阅读和理解编译器输出ut.@codename-我在指针取消引用时使用()。这使代码可读。例如-
r=*aPtr%*bPtr;
可以更改为
r=(*aPtr)%(*bPtr);
。此外,大多数编译器会对这一常见错误发出警告。请确保启用了编译器警告,并且您阅读并理解了编译器的输出。@codename-我使用(),而指针取消引用。这使代码可读。例如-
r=*aPtr%*bPtr;
可以更改为
r=(*aPtr)%(*bPtr);