0

在第 23 行- cout<"" 没有给出任何错误,而是删除此语句会产生异常输出。我已经在 CodeBlocks 中使用 mingw32 进行了尝试。当我删除它时,它给出了 - 进程返回 1984687287 (0x764DF487)

#include<iostream>
#include<stdio.h>

using namespace std;

int ispalin(long num)
{
    long sum=0,n;
    short rem;
    n=num;

    while(n>0) {
        rem=n%10;
        sum=sum*10+rem;
        n/=10;
    }

    if(sum==num)return 1;
        return 0;
}

int main()
{
    int n=1;
    for(int i=999;i>=1;i--) {
        for(int j=999;j>=1;j--)
        {
            if((i*j)<=n)
            {
                cout<""; // LINE 23
                break;
            }
            if((i*i)<=n)
            {
                printf("%d",n);
                return 0;
            }
            if(ispalin(i*j))
            {
                n=i*j;
                cout<<n<<"\n";
                break;
            }
        }
    }
    return 1;
}
4

2 回答 2

2

对于插入运算符

if((i*j)<=n){
    cout<<"";
         ^ Need one more <  
   ...
     }

在某些平台上cout(隐式void*)对象可能会与空字符串进行比较并<给出布尔语句

Mingw 4.7.2 给我带来了错误

于 2013-09-03T19:28:29.113 回答
0

它不会给出错误,因为它是合法的,尽管没有结果的声明。 ostream对象可以隐式转换为void*. 因此,该表达式导致 avoid*和 a之间的比较const char*,这是合法的。

至于您删除该语句时的错误,我无法重现。

于 2013-09-03T19:41:52.203 回答