2016-03-23 19 views
2

私はそれが符号なしを意味すると思います。しかし、正確に何の違いです:cの "U"は何を意味するのですか?つまり、#define FOO((uint32_t)1000U)))

#define FOO ((uint32_t)1000U)) 

#define FOO ((uint32_t)1000)) 
+0

Cで整数リテラルについて学ぶ必要があるようですが、私は '0x1000u'、' 1000u'、 '0100u'の違いを見てみることをお勧めします。 – user3528438

+1

あなたが「リテラル」を検索するのを知っていなければ、ウェブ検索からこれを派生させようと思っていなければ、面白いと思います。 – jdv

+0

@jdvそうではありません。グーグル "Cの接尾辞"で十分だろう。 – matt

答えて

0

this tableによれば、タイプunsigned intの定数を示します。同じ説明はhereです。

+1

なぜキャストはありますか? – usr2564301

+0

@RadLexus 'sizeof(unsigned)== 2 'の場合、' uint32_t'へのキャストなしでは、FOOはわずか2バイトにすぎず、微妙なバグが(特にC++では)発生する可能性があります。一般的に言えば、あなたがキャストをしている場合は 'U'は冗長ですが、逆は真ではありません。 – mtijanic

関連する問題