当我给sizeof(a),其中a=13.33,浮子变量时,大小为4个字节.但如果我sizeof(13.33)直接给出,大小是8字节.
我不明白发生了什么.有人可以帮忙吗?
kar*_*hik 43
这些是语言规则.
13.33是一个数字文字.它被视为双倍,因为它是双倍的.如果您希望将13.33视为浮点字面值,则表示13.33f.
13.33是双字面的.如果sizeof(float)== 4,sizeof(13.33f)== 4也应该成立,因为13.33f是一个浮点字面值.
Dav*_*nan 19
文字13.33被视为双精度浮点值,宽度为8个字节.
你的变量的类型和大小都很好.只是编译器有一些文字的默认类型,那些在程序中硬编码的常量值.
如果你要求sizeof(1),你会得到sizeof(int).如果你要求sizeof(2.5),你会得到sizeof(double).这些显然分别适合于char和float,但编译器具有文字的默认类型,并将其视为直到赋值.
但是,您可以覆盖此默认行为.例如:
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
Run Code Online (Sandbox Code Playgroud)
干杯!