1. 程式人生 > >oj提交遇到的問題

oj提交遇到的問題

1.   error: reference to 'max' is ambiguous

ambiguous是含糊的意思。系統內部有個max變數, 重名了。 換成另外一個變數名. 

2.  In function 'int main()':  

p.cc:46: error: overloaded function with no contextual type informat

這個又是同名, 是函式同名了, 不是main函式的問題, 也許是其他函式名, 改了吧!

3. syntax error : missing ')' before 'constant' 

   error C2143: syntax error : missing ';' before 'constant'

[cpp] view plaincopyprint?
  1. #define num 1024
  2. char a[num];  
  3. char b[num];  
  4. int max, length_a, length_b;  
  5. void pulls(int now_a, int now_b, int num){  
  6. }  
這裡num經過巨集命令的常量, 而在函式中出現了相同的名, 所以報了錯

4. 

p.cc: In function 'int main()':p.cc:44: error: call of overloaded'abs(int)' is ambiguous/usr/include/c++/4.4/cmath:94: note: candidates are: double std::abs(double)/usr/include/c++/4.4/cmath:98: note: float std::abs(float)/usr/include/c++/4.4/cmath:102: note: long double std::abs(long double)

程式中用到了abs函式, 因為你abs函式裡的是int型, 一種方法你將裡面的數乘以1.0, 然後加標頭檔案 cmath, ,, 第二種方法直接引入標頭檔案 cstdlib, (我寫的是c++).

5. 這個不是編譯錯誤,  屬於程式錯誤. 我在main函式中 memset(sheng, -1, sizeof(sheng));

[cpp] view plaincopyprint?
  1. if(sheng[n] != -1){  
  2.     cout<<"min"<<n<<endl;  
  3.     return sheng[n];  
  4. }  
結果發現一開始就進入這個if, 於是cout<<sheng[n];顯示
. 後來意識到時sheng陣列我定義成了double型. 這個問題好難看出

6. vc++編譯是報錯 LINK : fatal error LNK1168: cannot open Debug/1.exe for writing
執行 link.exe 時出錯.

     1. 你要關閉之前的執行黑框  2. 要是你發現工作列中沒有執行的黑框, 那就啟動任務工作管理員,找到1.exe程序關閉

7. 做一道深度搜索的時候,發現搜尋if判斷的不同決定上走, 下走, 發現下走後面的程式沒能執行, 後來發現上走下走形成了死迴圈, 後來記錄一下visited[]就好了. 

8. vc++編譯錯誤:error C2601: 'print' :local function definitions are illegal, 問題出在這個函式前面的函式沒有 { 沒有匹配, 這裡是沒    有少了一個}

9. 今天用到了unsigned long long型別,輸出的時候printf("%lld", m)   無符號long long printf("%llu", m); 在vc++中沒法編譯成功, 但是提交可以成功。 後來用了_int64 m

這個m因為是64位的, 所以不能用cout輸出, 可以printf("%I64d\n", m);

10. poj上通過不了_int64, 但是可以unsigned long long, vc++可以通過_int64, 但是通過不了unsigned long long。萬幸的是現在可以不用vc++了。

11. 很久以前提交的時候就遇到了for裡頭定義int i編譯錯誤的問題, 現在才明白。 ISO/ANSI C++ 把在此定義的變數的作用域範圍限定在 for 迴圈體 內,或者說,出了迴圈體之外這個變數就無效了。在zoj提交報的編譯錯誤是這個:name lookup of 'i' changed for ISO 'for' scoping, 因為我第一個for定義了 int i, 後來的for就沒有定義了, 所以報了這個錯誤, 把int i放到for 前頭就好了.

12. 一位陣列動態定義,之前int *p = new p(len); delete p; 但是後來總是報記憶體錯誤, 後來才發現int *p = new p[len]; delete []p;這麼定 義。

13. subscript requires array or pointer type 

     left of '.a' must have class/struct/union type當你定義了一個結構體,名字跟另一個變數重名了,那麼就會編譯出錯。

14. 編好之後執行時出現:x=-1.#IND,這表示被零除溢位了。如: 
double c=0; 
double x=-1/c; //此時x就會顯示為-1.#IND 

15. 提交的時候Runtime Error: SIGFPE, 這個是浮點數異常, Runtime Error:SIGSEGV    段錯誤

轉自:http://blog.csdn.net/fofu33/article/details/8213821