注册 登录
编程论坛 C++教室

有警报

万致远醉帥 发布于 2020-04-09 09:55, 2689 次点击
运行/编译的时候总会现警报:>C:\Users\sz\source\repos\Project18\Project18\源.cpp(26,11): warning C4244: “=”: 从“_Ty”转换到“int”,可能丢失数据,有神马问题?
#include<iostream>
#include<string>
#include <algorithm>
#include <vector>
#include <memory>
#include<windows.h>
using namespace std;
void da()
{
    int n, max, b = 0, l = 1;
    cout << "有几个数";
    cin >> n;
    if (n < 2)
    {
        cout << "请尊重程序员,谢谢" << endl;
        system("pause");
        system("cls");
   
    }
    vector<double> a(n);
    for (b = 0; b < n; b++)
    {
        cout << "请输入第" << b + 1 << "个数";
        cin >> a[b];
    }
    max = a[0];
    for (b = 1; b < n; b++)
    {
        if (a[b] > max)
        {
            max = a[b];
            l = b;
        }
    }
    cout << "最"; Sleep(500); cout << "大"; Sleep(500); cout << "的"; Sleep(500); cout << "数"; Sleep(500); cout << "是"; Sleep(500); cout << max; Sleep(500); cout << "是"; Sleep(500); cout << "第"; Sleep(500); cout << ++l; Sleep(500); cout << "个"; Sleep(500);
    while (true)
    {
        NULL;
    }

}
void xiao()
{
    int n, min, b = 0, l = 2;
    cout << "有几个数";
    cin >> n;
    if (n < 2)
    {
        cout << "请尊重程序员,谢谢" << endl;
        system("pause");
        system("cls");

    }
    vector<double> a(n);
    for (b = 0; b < n; b++)
    {
        cout << "请输入第" << b + 1 << "个数";
        cin >> a[b];
    }
min = a[0];
    for (b = 1; b < n; b++)
    {
        if (a[b] < min)
        {
            min = a[b];
            l = b;
        }
    }
    cout << "最"; Sleep(500); cout << "小"; Sleep(500); cout << "的"; Sleep(500); cout << "数"; Sleep(500); cout << "是"; Sleep(500); cout << min;
    while (true)
    {
        NULL;
    }
}
int main()
{
    const double i = 1.2;
    cout << "正在加载中,请稍后。就一杯茶的功夫";
    Sleep(100000);
    cout << "求最大/小数,作者:万致远 版本" << i << endl;
    string da_xiao;
    cout << "求大?求小?";
    cin >> da_xiao;
    if (da_xiao=="大")
    {
        da();
    }
    else
    {
        if (da_xiao=="小")
        {
            xiao();
        }
        else
        {
            cout << "新功能正在开发中,或请更新版本";
        }
    }
}

[此贴子已经被作者于2020-4-9 09:56编辑过]

9 回复
#2
叶纤2020-04-09 10:24
switch 后跟任何整型或枚举类型,或可按语境隐式转换到整型或枚举类型的类类型的表达式,或单个这种类型的非数组变量的,带花括号或等号初始化器的声明。
#3
万致远醉帥2020-04-09 10:32
没有switch语句呀
#4
叶纤2020-04-09 10:35
哦,没仔细看,只看了个轮廓
#5
叶纤2020-04-09 10:37
等你把没必要的汉字删了再仔细看吧
#6
return_02020-04-09 10:45
估计就是说cpp文件不支持中文,可能丢失数据
#7
return_02020-04-09 10:46
string有可能存不下
#8
叶纤2020-04-09 10:59
程序代码:

#include<iostream>
#include<string>
#include <algorithm>
#include <vector>
#include <memory>

using namespace std;
void da()
{
    int n, max, b = 0, l = 1;
    cout << "有几个数";
    cin >> n;
    if (n < 2)
    {
        
        system("pause");
        system("cls");
   
    }
    vector<double> a(n);
    for (b = 0; b < n; b++)
    {
        cout << "请输入第" << b + 1 << "个数";
        cin >> a[b];
    }
    max = a[0];
    for (b = 1; b < n; b++)
    {
        if (a[b] > max)
        {
            max = a[b];
            l = b;
        }
    }
   
    while (true)
    {
        NULL;
    }

}
void xiao()
{
    int n, min, b = 0, l = 2;
    cout << "有几个数";
    cin >> n;
    if (n < 2)
    {
        
        system("pause");
        system("cls");

    }
    vector<double> a(n);
    for (b = 0; b < n; b++)
    {
        cout << "请输入第" << b + 1 << "个数";
        cin >> a[b];
    }
min = a[0];
    for (b = 1; b < n; b++)
    {
        if (a[b] < min)
        {
            min = a[b];
            l = b;
        }
    }
   
    while (true)
    {
        NULL;
    }
}
int main()
{
    string da_xiao;
    cout << "求大?求小?";
    cin >> da_xiao;
    if (da_xiao=="")
    {
        da();
    }
    else
    {
        if (da_xiao=="")
        {
            xiao();
        }
        else
        {
            cout << "新功能正在开发中,或请更新版本";
        }
    }
}


#9
万致远醉帥2020-04-09 10:59
运行没问题,就是有点后怕
#10
雪影辰风2020-04-09 11:40
首先,这个警报跟强制类型转换有关,动态数组是double,而你多次将元素赋值给int型,所以会出现类型转换,转换后的结果可能与你实际结果不符。。。
你用的IDE应该是VS,我用VS2019,把所有的动态数组改成int型没有警报
但是我不知道你要的效果是不是这样,不一致再提出来,谢谢!
1