C sizeof()语句是在编译时还是运行时计算的?
有这样的东西是在浪费内存吗C sizeof()语句是在编译时还是运行时计算的?,c,runtime,sizeof,compile-time,C,Runtime,Sizeof,Compile Time,有这样的东西是在浪费内存吗 static const char size = sizeof(struct MyStruct); 如果在编译时对它们进行评估,那就像这样 static const char size = 10; functioncall(size); functioncall2(size); 哪一个更为理想: #define STRUCTSIZE sizeof(struct MyStruct) 或 如果在编译时计算sizeof,则在运行时为常量值分配额外内存。如果在编译时对其
static const char size = sizeof(struct MyStruct);
如果在编译时对它们进行评估,那就像这样
static const char size = 10;
functioncall(size);
functioncall2(size);
哪一个更为理想:
#define STRUCTSIZE sizeof(struct MyStruct)
或
如果在编译时计算sizeof,则在运行时为常量值分配额外内存。如果在编译时对其进行计算,我还可以使用宏来提高内存效率。但是,如果在运行时对它们进行求值,这个变量将节省处理能力,因为在我使用它时,它不必反复求值。所以sizeof语句是在编译时还是运行时计算的
在C语言中,sizeof语句是在编译时还是运行时计算的
通常是的。但是,当应用于可变长度数组时,将在运行时对其进行计算。否则,将根本不计算操作数表达式,只使用表达式的类型来确定结果
在这种情况下,使用宏代替变量没有任何好处。请注意,使用该变量也不是必需的,并且可能会混淆程序。然而,这主要是一个风格问题你使用的是哪种语言,C还是C++?两种语言的完整答案略有不同。
static const char size = sizeof(struct MyStruct);