2012-03-05 32 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」