This question already has answers here:
Does sizeof evaluate at compile-time or runtime?
                                
                                    (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