2014-09-04 63 views
-2

我幾乎完成了所有錯誤,這要歸功於社區和所有成員。警告:'LPEVENT CItem :: m_pkExpireEvent'並警告:格式'%d'期望類型'int',但參數3的類型'雙'

在這篇文章中,我將嘗試包括所有剩餘的錯誤。

  1. warning: unused variable 'sum'

    if (!m_pTable->GetDragonHeartExtValues(ds_type, grade_idx, vec_chargings, vec_probs)) 
    { 
        return false; 
    } 
    
    int idx = Gamble(vec_probs); 
    
    float sum = 0.f; 
    if (-1 == idx) 
    { 
        sys_err ("Gamble is failed. ds_type(%d), grade_idx(%d)", ds_type, grade_idx); 
        return false; 
    } 
    
  2. warning: NULL used in arithmetic

    const char * line = two_arguments(value_string, db_host[0], sizeof(db_host[0]), db_user[0], sizeof(db_user[0])); 
    line = two_arguments(line, db_pwd[0], sizeof(db_pwd[0]), db_db[0], sizeof(db_db[0])); 
    
    if (NULL != line[0]) 
    { 
        char buf[256]; 
        one_argument(line, buf, sizeof(buf)); 
        str_to_number(mysql_db_port[0], buf); 
    } 
    
  3. warning: comparison is always false due to limited range of data type

    int j = 1; 
    
    do 
    { 
        BYTE p = wCell + (DRAGON_SOUL_BOX_COLUMN_NUM * j); 
    
        if (p >= DRAGON_SOUL_INVENTORY_MAX_NUM) 
         return false; 
        if (m_pointsInstant.bItemGrid[p]) 
         if (m_pointsInstant.wDSItemGrid[p] != iExceptionCell) 
          return false; 
    } 
    while (++j < bSize); 
    
    return true; 
    
  4. warning: control reaches end of non-void function

  5. format '%d' expects type 'int', but argument 4 has type 'double'

    sprintf(buf, "dice(%d) prob(%d)", fDice, fProb); 
    

很抱歉,如果不允許問多個問題,但即使我等待90分鐘,問後,終點是一樣的,希望他是積極的。

+0

你需要什麼幫助?請明確指出, – 2014-09-04 21:40:32

+1

'%d'是用於整數,而不是'double'值,所以你實際上困擾的是什麼?!? OT:'這個問題是由於無法再現的問題或簡單的印刷錯誤造成的。雖然類似的問題可能在這裏討論,但這個問題的解決方式不太可能有助於未來的讀者。這通常可以通過識別並仔細檢查在發佈前重現問題所需的最短程序來避免。 – 2014-09-04 21:40:50

+0

因此,它什麼都不做?對不起,但我不明白你的問題。 – 2014-09-04 21:43:56

回答

0
  1. 您聲明瞭一個sum變量,表示您沒有在任何地方使用,因此您可以將其刪除。

  2. line[0]char,不是指針,所以使用0'\0'而不是NULL。

  3. 您正在比較變量與變量數據類型的有效值範圍之外的值。給定您顯示的代碼,這意味着要麼DRAGON_SOUL_INVENTORY_MAX_NUM大於255,要麼bSize小於int等。

  4. 函數有一個非void的返回類型,但是編譯器檢測到函數代碼流中的一個路徑,可能導致它跳過返回值。

  5. 不言自明。當致電sprintf()時,您正在指定一個doublefProb變量),其中int預計。要格式化double值,必須使用浮點類型說明符,例如%lf%d說明符代替int值。

相關問題