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
                    
            //}
            
}
阅读 6k
3 个回答

下面的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语句应尽量少用或不用,容易造成不易理解的代码

题主提供的代码中问题比较多,修改比重写还要麻烦。建议参考 Sieve of Eratosthenes 算法重写一个(链接里的动图很形象易懂)。

这代码的思路简直是天马行空。如果连下标越界和if (a[p] = -1)都看不出来的话,不如把学妹交给我。建议直接重写,不要改了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题