你的回答
2021-09-12 12:57
采纳率: 0%
浏览 30

QT:关于qdebug影响程序运行的问题

同一段代码,我在加上一句和程序无关的qDebug后居然和之前的运行结果不一样
比如加上之前程序的变量a=1,加上之后a=2;a的最终值是由很多条件(if)决定的,但是qDebug按理来说并不影响程序的判断,
甚至我让这个qDebug有一个if条件而无法执行,但仅仅是写上去而不触发依然会改变程序结果。
试了半天没有头绪,希望有人能帮忙解决,如果需要原代码我再发,代码有点长
尽量简化了下,程序:

int T=0;
int M=0;

class::class(...)
{
    Timer_1=new QTimer();//Timer_1Timer_2是私有成员变量
    Timer_2=new QTimer();   
    connect(Timer_1,&QTimer::timeout,this,&class::a_Timer);
    connect(Timer_2,&QTimer::timeout,this,&class::b_Timer);
    
    action(0);
}

void class::action(int n)
{
    if(n==60)
    {
        ...
        for(int i=0;i<=59;i++)
        {
            if(...)
            {
    ...
            }
        }
        update();
    }
    else if(...)
    {
        if(...)
        {
            action(++n);
        }
        else
        {
            if(...)
            {
                ...
            }
            update();
            if(...)
            {
                for(...)
                {
                    ...
                }
            }
            if(...)
            {
                ...
                qDebug()<<...;//文中说的qDebug()在此处,但实际上只要在该函数内,qDebug无论在哪都会影响程序结果
                for(...)
                {
                    ...
                }
                if(...)
                {
                    if(...)
                    {
                   if(...)
                   {
                            T=n;
                            M=0;
                        Timer_1->start(500);
                       }
                        else
                   {
                   if(...)
                   {
                                T=n;
                         M=0;
                                Timer_1->start(500);
                    }          
                            else
                            {
                                T=n;
                         M=0;
                                Timer_1->start(500);
                            }
                        }
                        update();
                    }
                    else
                    {
                        action(++n);
                    }
                }
                else
                {
                    if(...)
                    {
                        if(...)
                        {
                            if(...)
                        {
                            ...//加入qDebug前程序进入该处
                            }
                            else if(...)
                            {
                            ...//加入qDebug后程序进入该处
                            }
                        else if(...)
                            {
                                ...
                            }
                        else if(...)
                            {
                            ...
                            }
                        }
                        else
                        {
                            ...
                        }
                        if(...)
                        {
                            action(++n);
                        }
                        else
                        {
                            if(...)
                            {
                                action(++n);
                            }
                            else
                            {
                        T=n;
                         M=0;
                                Timer_2->start(500);
                            }
                        }
                    }
                    else
                    {
                        action(++n);
                    }
                }
            }
        }
    }
    else
    {
        action(++n);
    }
}

void class::a_Timer()
{
    ...
    for(...)
    {
        ...
    }
    if(M==5)
    {
        ...
        Timer_1->stop();
        update();
        action(T);
    }
    else
    {
        M++;
    }
}

void class::b_Timer()
{
    ...
    for(...)
    {
        ...
    }
    if(...)
    {
        ...
        M++;
    }
    else if(...)
    {
        ...
        M++;
    }
    else if(...)
    {
        ...
        M++;
    }
    else if(...)
    {
        ...
        M++;
    }
    else if(M==5)
    {
        Timer_2->stop();
        action(T);
    }
    update();
}


  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • CSDN专家-cpp_learner 2021-09-13 08:46

    a的最终值是由很多条件(if)决定的
    qDebug()确实不会影响程序的结果,应该是你if语句哪里,改变了a的值。
    你可以写一个类似的简短的代码发出来我们给你看看,解释解释

    打赏 评论
  • 低级用户 2021-09-13 08:43

    代码来一份

    打赏 评论

相关推荐 更多相似问题