运行程序时出现以下错误
(61): warning C4244: '+=' : conversion from 'double' to 'int', possible loss of data
(63): error C2062: type 'int' unexpected
(69): warning C4129: 'm' : unrecognized character escape sequence
答案 0 :(得分:3)
\m
不是可识别的转义字符,原因是:
printf("\max");
更改为:
printf("max"); // or "cout << "max";" as this is C++.
字符串文字中的\
用于转义后续字符,例如\n
。
int
是一种原始数据类型,而不是类实例,因此int.MaxValue;
无效。要获得int
的最大值,您可以使用std::numeric_limits<int>::max()
和#include <limits>
,但转换错误是由以下原因引起的:
L += dist(R[i], R[i+1]);
因为L
是int
,但dist()
返回double
。
将L
,min
和max
更改为double
,然后使用:
double min = std::numeric_limits<double>::max();
答案 1 :(得分:2)
您的警告来自此处L += dist(R[i], R[i+1]);
L是一个整数,你添加一个双
错误来自此行int min = int.MaxValue;
,是的,这不是有效的c ++
我想你想要int min = std::numeric_limits<int>::max();
最后一个警告是`printf(“\ max”);
\m
不是已知的转义序列..
答案 2 :(得分:2)
int min = int.MaxValue;
int max = 0;
if (L > max)
{
max = L;
printf("\max");
}
将其更改为
int min = numeric_limits<int>::max();
int max = 0;
if (L > max)
{
max = L;
printf("%d\n", max);
}
别忘了
#include <limits>
你应该使用 “的iostream” 不 “cstdio”