c++ : if 语句的判断条件不起作用

如果我想输入的long型,或者float型的数字不溢出,超限,该怎么设置呢?
我都设置判断条件了,为了不溢出,设置的极值,结果不起作用;换个小的数可以,

#include <stdio.h>
#include <iostream>
#include <cmath>
#pragma warning(once:4996)
using namespace std;

int main()
{
    // std::cout << "Hello World!\n";
    // 注意要考虑输入输出数据精度及范围
    //(1)
    long int lA;
    cout <<"请输入long型整数,注意范围" << endl;
    cout << LONG_MIN<<"---"<<  LONG_MAX<< endl;
    scanf_s("%ld", &lA);
    if (lA > LONG_MAX || lA < LONG_MIN)
    {
        cout<<"您输入的数字已经超出范围"<<endl;

    }
    else 
    {
        printf("该数的16进制:%x\n", lA);
    }
    

img

img

你的long 存不下这么大的数,所以说编译器就给了这个la任意值哦,你可以调试看看你的la,是不是随机值,