2012-03-05 410 views
0

我收到以下错误,当我运行我的程序错误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 
+0

除了其他的错误,你*应该*已经得到警告,调用'sqrt'没有声明。你需要添加'#include '。你还需要弄清楚你的编译器为什么没有提醒你。 – 2012-03-05 17:10:10

+1

您的代码的缩进造成难以阅读。我纠正了这一点。我还为错误和警告消息标记的行添加了评论;这使得读者能够更轻松地找到相关的产品线,而无需重新计数。 – 2012-03-05 17:10:53

回答

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]); 

因为Lintdist()返回double

变化Lminmax键入double及用途:

double min = std::numeric_limits<double>::max(); 
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
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”

相关问题