1. 程式人生 > >《C專家編程》---不知道的那些事

《C專家編程》---不知道的那些事

解決 inter pan 無反應 編程 get 符號 print 說明

1.char *b = const char *a 會報警告,而const char* a = char *b不會,要使這種賦值形式合法,必須滿足下列條件之一:

  1)兩個操作數都是指向有限定符或無限定符的相容類型的指針

  2)左邊指針指向的類型必須具有右邊指針所指向類型的全部限定符

警告內容:initialization discards ‘const’ qualifier from pointer target type [enabled by default]

(C專家編程:1.9節)

2.對有符號數轉換為無符號數的例子和解決辦法

來看一段代碼:

int main()
{
    int d = -1;
    unsigned int a = 3;
    if(d < a)
    {
        printf("d is low\n");
    }
}

這段代碼在運行後毫無反應,說明程序沒有進入if判斷語句,即if判斷的返回值總是0

原因顯而易見,因為d被轉換為無符號整數,會變得很大,這樣永遠都大於a,

解決的辦法是

if(d < (int a))

(C編程專家:1.10節)

《C專家編程》---不知道的那些事