This question already has answers here:
How can one print a size_t variable portably using the printf family?
                                
                                    (12个答案)
                                
                        
                        
                            Platform independent size_t Format specifiers in c?
                                
                                    (3个答案)
                                
                        
                        
                            How do I print the size of int in C?
                                
                                    (3个答案)
                                
                        
                                2年前关闭。
            
                    
answered一个question,如果使用错误的格式说明符,则代码的行为是不确定的。

在该问题中,OP为%lu运算符使用了sizeof格式说明符。

printf("%lu \n", sizeof(*"327"));


但是,我得到了一些评论,对于该代码,%lu不是UB。

那么,sizeof(*"327")是否正确?

最佳答案

sizeof运算符返回size_t的类型。该类型的正确格式说明符是%zu

如果使用%lu打印size_t,则取决于size_t是否大于long,它可能行不通。如果size_t较大,则您有未定义的行为,如果不是,则该行为定义良好。当然,您不能真正确定。

最好使用特定于该类型的正确格式说明符。

关于c - sizeof()运算符的格式说明符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46729692/

10-11 21:22