私はそれが符号なしを意味すると思います。しかし、正確に何の違いです:cの "U"は何を意味するのですか?つまり、#define FOO((uint32_t)1000U)))
#define FOO ((uint32_t)1000U))
と
#define FOO ((uint32_t)1000))
私はそれが符号なしを意味すると思います。しかし、正確に何の違いです:cの "U"は何を意味するのですか?つまり、#define FOO((uint32_t)1000U)))
#define FOO ((uint32_t)1000U))
と
#define FOO ((uint32_t)1000))
がthis tableによれば、タイプunsigned int
の定数を示します。同じ説明はhereです。
なぜキャストはありますか? – usr2564301
@RadLexus 'sizeof(unsigned)== 2 'の場合、' uint32_t'へのキャストなしでは、FOOはわずか2バイトにすぎず、微妙なバグが(特にC++では)発生する可能性があります。一般的に言えば、あなたがキャストをしている場合は 'U'は冗長ですが、逆は真ではありません。 – mtijanic
Cで整数リテラルについて学ぶ必要があるようですが、私は '0x1000u'、' 1000u'、 '0100u'の違いを見てみることをお勧めします。 – user3528438
あなたが「リテラル」を検索するのを知っていなければ、ウェブ検索からこれを派生させようと思っていなければ、面白いと思います。 – jdv
@jdvそうではありません。グーグル "Cの接尾辞"で十分だろう。 – matt