c++ - VS2015没有cout还能输出是怎么回事

查看:704
本文介绍了c++ - VS2015没有cout还能输出是怎么回事的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

帮一个学妹改代码,计算65535内的所有素数。他的逻辑是发现某个数有因子后,就让他的值等于-1,然后判断,如果不等于-1就输出这个数。结果还是能输出-1,我拿到这个程序后,注释掉了最后面的cout,发现依然有输出(成千上万个-1和某些素数)。后来我把他的void main()改成了int main()就能正常运行但是会异常退出。后来我用clion编译这个代码,就能正常输出。这是为什么,int main和void main为什么会有这么大的差异,void的时候为什么注释掉了cout在vs2015里还会有输出。


    #include<iostream>
    using namespace std;
    void main()
    {
        int i = 1;
        int a[65534] = { 1 };
        while (i <= 65534)
        {
            a[i] = a[i - 1] + 1;
            i++;
        }
        for (int j = 0; j <= 255; j++)
        {
            if (a[j] % 2 == 0 || a[j] % 3 == 0 || a[j] % 5 == 0 || a[j] % 7 == 0 || a[j] % 11 == 0 || a[j] % 13 == 0)
            {
                a[j] = -1;
            }
        }
        a[0] = -1;
        a[1] = 2, a[2] = 3, a[4] = 5, a[6] = 7, a[10] = 11, a[12] = 13;
            for (int m = 0; m <= 255; m++)
            {
                if (a[m] == -1)
                    continue;
                else
                    for (int n = 65534; n >= 0; n--)
                    {
                        if (a[n] == a[m])
                        {
                            break;
                        }
                        else if (a[n] % a[m] == 0)
                        {
                            a[n] = -1;
                        }
                    }
            } 
                cout << "65535以内素数:" << endl;
            //for (int p = 0; p <= 65534; p++)
            //{
                //if (a[p] == -1)
                //    continue;
                //else
                    
            //}
            
}

解决方案

下面的if (a[p] = -1),会执行这个赋值语句的,代码思路确实很奇怪,思路有点混乱
中间的a[1] = 2, a[2] = 3, a[4] = 5, a[6] = 7, a[10] = 11, a[12] = 13;这段不觉得很难受么...
int main\void main这是一个有定论的事情了,void就是错误的,LLVM甚至会把这个报错,不用再用void main的写法了
思路有点乱,建议重写

补充一下,continue语句应尽量少用或不用,容易造成不易理解的代码

这篇关于c++ - VS2015没有cout还能输出是怎么回事的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆