This question already has answers here:
Does sizeof evaluate at compile-time or runtime?
(3个答案)
在16天前关闭。
有这样的东西浪费记忆吗
如果在编译时对它们进行求值,那就像在做;
哪个更好:
要么
如果在编译时评估了sizeof,那么它将在运行时为常量分配额外的内存。如果在编译时对其进行评估,那么我不妨使用一个宏来提高内存效率。但是,如果在运行时对它们进行评估,则此变量将节省处理能力,因为在我使用它时不必反复评估它。所以。是否在编译时或运行时评估sizeof语句?
(3个答案)
在16天前关闭。
有这样的东西浪费记忆吗
static const char size = sizeof(struct MyStruct);
如果在编译时对它们进行求值,那就像在做;
static const char size = 10;
functioncall(size);
functioncall2(size);
哪个更好:
#define STRUCTSIZE sizeof(struct MyStruct)
要么
static const char size = sizeof(struct MyStruct);
如果在编译时评估了sizeof,那么它将在运行时为常量分配额外的内存。如果在编译时对其进行评估,那么我不妨使用一个宏来提高内存效率。但是,如果在运行时对它们进行评估,则此变量将节省处理能力,因为在我使用它时不必反复评估它。所以。是否在编译时或运行时评估sizeof语句?
最佳答案
在C语言中,是否在编译时或运行时评估sizeof()语句?
通常是。但是,将其应用于可变长度数组时,将在运行时对其进行评估。否则,将完全不对操作数表达式求值,并且仅使用表达式的类型来确定结果。
在这种情况下,使用宏代替变量没有好处。请注意,也不必使用变量,并且可能会使程序模糊。但是,这主要是样式问题。
关于c - 是否在编译时或运行时评估sizeof()语句? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60029026/
10-13 23:58