2013-10-30 106 views
2

我瞭解無符號和無符號整數的區別。但我的問題有點不同。(無符號*)優於(無符號整型*)解析內存?

我是ioremaping(linux)一個特定的內存,我想讀取內存。 我做了以下THIG:

func() 
{ 
    unsigned int *p; 

    p = (unsigned int *)ioremap(ADDR,8*sizeof(unsigned int)); 
    for (i = 0; i <= 7; i++) 
     pr_err("p[%d] = %d", i, p[i]); 
} 

這完美的作品。但是我看到一個標準的代碼執行相同的操作,使用(unsidned *)而不是(unsigned int *)。那是p是unsigned *p

func() 
{ 
    unsigned *p; 

    p = (unsigned *)ioremap(ADDR,8*sizeof(unsigned)); 
    for (i = 0; i <= 7; i++) 
     pr_err("p[%d] = %d", i, p[i]); 
} 

我想知道它是否是一個很好的編程習慣(與平臺無關的代碼??)。如果是,請說明原因。

+2

「*我明白無符號和無符號整數的區別*」 - 您認爲它們有什麼不同? (除了拼寫外,沒有其他的)。你應該使用'%u'或'%x',而不是'%d'來打印無符號值。 –

回答

3

unsignedunsigned int根本沒有區別。

因此,unsigned *unsigned int *完全沒有區別。


同樣,long是短期的long intint是短期的signed int等,有在一個與另一個沒有區別。唯一值得注意的例外是,無論是簡單的char是有符號還是無符號的,都是實現定義的,所以它不同於signed char

1

unsignedunsigned int是相同的類型,所以指向它們。 int是隱含的。