mingw中存在奇怪的语法缺陷

Strange syntax flaw in mingw

本文关键字:语法 缺陷 存在 mingw      更新时间:2023-10-16

第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;
}

对于插入运算符

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

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

它给我带来了Mingw 4.7.2 的错误

它不会给出错误,因为它是一个合法的语句,尽管没有结果。CCD_ 4对象可以隐式转换为CCD_。因此,该表达式导致void*const char*之间的比较,这是合法的。

至于你删除语句时的错误,我无法复制它。