开发者

why sizeof(13.33) is 8 bytes?

When I give sizeof(a), where a=13.33, a float variable, the size is 4 bytes. But开发者_如何学C if i give sizeof(13.33) directly, the size is 8 bytes.

I do not understand what is happening. Can someone help?


Those are the rules of the language.

13.33 is a numeric literal. It is treated as a double because it is a double. If you want 13.33 to be treated as a float literal, then you state 13.33f.

13.33 is a double literal. If sizeof(float) == 4, sizeof(13.33f) == 4 should also hold because 13.33f is a float literal.


The literal 13.33 is treated as a double precision floating point value, 8 bytes wide.


The 13.33 literal is being treated as 'double', not 'float'.

Try 13.33f instead.


The type and size of your variable are fine. It's just that the compiler has some default types for literals, those constant values hard-coded in your program.

If you request sizeof(1), you'll get sizeof(int). If you request sizeof(2.5), you'll get sizeof(double). Those would clearly fit into a char and a float respectively, but the compiler has default types for your literals and will treat them as such until assignment.

You can override this default behaviour, though. For example:

2.5 // as you didn't specify anything, the compiler will take it for a double.
2.5f // ah ha! you're specifying this literal to be float

Cheers!


Because 13.33 is a double, which gets truncated to a float if you assign it. And a double is 8bytes. To create a real float, use 13.33f (note the f).

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜