0

AT LINE 23- cout<"" ではエラーが発生せず、代わりにこのステートメントを削除すると異常な出力が生成されます。私はmingw32を使用してCodeBlocksで試しました。これを削除すると、プロセスが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*です。void*したがって、その式は aとa の比較になりますがconst char*、これは正当です。

ステートメントを削除したときのエラーについては、再現できません。

于 2013-09-03T19:41:52.203 に答える