我收到以下错误,当我运行我的程序错误C2062:类型“诠释”意外,无力解决这个错误
(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
我收到以下错误,当我运行我的程序错误C2062:类型“诠释”意外,无力解决这个错误
(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
\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();
你的警告是从这里L += dist(R[i], R[i+1]);
L是一个整数,你皆为加入了一倍。
错误来自于这条线int min = int.MaxValue;
,是的,这是无效的c + +。
我假设你想要int min = std::numeric_limits<int>::max();
最后一个警告是`printf(“\ max”);
\m
不是一个已知的转义序列..
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”
除了其他的错误,你*应该*已经得到警告,调用'sqrt'没有声明。你需要添加'#include'。你还需要弄清楚你的编译器为什么没有提醒你。 –
2012-03-05 17:10:10
您的代码的缩进造成难以阅读。我纠正了这一点。我还为错误和警告消息标记的行添加了评论;这使得读者能够更轻松地找到相关的产品线,而无需重新计数。 – 2012-03-05 17:10:53