草庐IT

WPRINTF_SIZEOF

全部标签

c++ - 会不会是 sizeof(T*) != sizeof(const T*)?

我正在和我的老板争论这件事。他们说“是的,他们可以与众不同。”sizeof(T*)!=sizeof(constT*)是否可能用于类型T? 最佳答案 不,它们不可能不同。对于足够不同的T1和T2,sizeof(T1*)可以不同于sizeof(T2*),但如果T2只是constT1,那么:3.9.2Compoundtypes[basic.compound]3[...]Pointerstocv-qualifiedandcv-unqualifiedversions(3.9.3)oflayout-compatibletypesshallhav

c++ - 为什么 sizeof(unsigned double) 等于 4?

我的一个同事问有没有unsigneddouble,我说没有,但我还是查了一下,编译到MicrosoftVisualC++2010:unsigneddoublea;doubleb;printf("size_a=%dsize_b=%d",(int)sizeof(a),(int)sizeof(b));它输出size_a=4size_b=8。即unsigneddouble为4个字节,double为8个字节。 最佳答案 unsigneddouble无效。在MSVC中也是如此。在启用警告的MSCV2010中编译上述代码时,您会得到:警告C407

c++ - sizeof(bool) 是否在 C++ 语言标准中定义?

我在标准文档中找不到答案。C++语言标准是否要求sizeof(bool)始终为1(对于1个字节),还是这个大小是实现定义的? 最佳答案 sizeof(bool)是实现定义的,标准特别强调了这一事实。§5.3.3/1,删节:sizeof(char),sizeof(signedchar)andsizeof(unsignedchar)are1;theresultofsizeofappliedtoanyotherfundamentaltypeisimplementation-defined.[Note:inparticular,sizeof

PHP数组: count or sizeof?

要查找PHP$array中的元素个数,哪个更快/更好/更强?count($array)或sizeof($array)?编辑感谢安迪·莱斯特(AndyLester),我从多语言的角度改进了我的问题。手动评论者说"[sizeof]doesnotmeanthesameinmanyotherlanguagesbasedonC"这是真的吗? 最佳答案 如果它们相同,我会使用count(),因为根据我的经验,它更常见,因此会导致更少的开发人员阅读您的代码说“sizeof(),那是什么?”并且必须查阅文档。我认为这意味着sizeof()不像在C中

c++ - 为什么结构的 sizeof 不等于每个成员的 sizeof 之和?

为什么sizeof运算符返回的结构大小大于结构成员的总大小? 最佳答案 这是因为添加了填充以满足对齐约束。Datastructurealignment影响程序的性能和正确性:未对齐的访问可能是硬错误(通常是SIGBUS)。未对齐的访问可能是一个软错误。在硬件中进行了修正,以适度降低性能。或通过软件中的仿真进行纠正,从而导致严重的性能下降。此外,原子性和其他并发保证可能会被破坏,从而导致细微的错误。这是一个使用x86处理器的典型设置的示例(全部使用32位和64位模式):structX{shorts;/*2bytes*//*2paddi

c++ - 为什么除了 char 之外的内置类型 sizeof 在 C 和 C++ 中依赖于编译器?

为什么C和C++中的基本类型没有像Java中那样严格定义,其中int总是4个字节,long是8个字节,等等。据我所知C和C++只有一个char被定义为1个字节,其他所有内容由不同的编译器定义不同。因此,C和C++中的int不必一定是4个字节,只要它比short长并且short更长>char.我只是想知道为什么会这样,它有什么用吗? 最佳答案 原因很大程度上是因为C可以移植到更多种类的平台上。不同数据类型在不同平台上的大小不同的原因有很多,但至少从历史上看,int已被调整为平台的原生字长。在PDP-11上它是16位(而long最初是为

c++ - 为什么除了 char 之外的内置类型 sizeof 在 C 和 C++ 中依赖于编译器?

为什么C和C++中的基本类型没有像Java中那样严格定义,其中int总是4个字节,long是8个字节,等等。据我所知C和C++只有一个char被定义为1个字节,其他所有内容由不同的编译器定义不同。因此,C和C++中的int不必一定是4个字节,只要它比short长并且short更长>char.我只是想知道为什么会这样,它有什么用吗? 最佳答案 原因很大程度上是因为C可以移植到更多种类的平台上。不同数据类型在不同平台上的大小不同的原因有很多,但至少从历史上看,int已被调整为平台的原生字长。在PDP-11上它是16位(而long最初是为

c++ - 64 位机器上 int 和 sizeof int 指针的大小

我只是想知道我的笔记本电脑是64位还是32位机器。(它是64)。所以,我考虑打印以下内容:intmain(){printf("%d",sizeof(int));}结果是4,看起来很奇怪(因为是64位机器)但是,当我打印这个时:intmain(){printf("%d",sizeof(int*));}结果是8,这更有意义。问题是:由于我使用的是64位机器,因此int等原始类型不应该使用8个字节(64位),那么sizeofint应该是8?为什么不是这样?为什么int*的大小是8?这里有点困惑,先谢谢了。 最佳答案 不,sizeof(in

c++ - 64 位机器上 int 和 sizeof int 指针的大小

我只是想知道我的笔记本电脑是64位还是32位机器。(它是64)。所以,我考虑打印以下内容:intmain(){printf("%d",sizeof(int));}结果是4,看起来很奇怪(因为是64位机器)但是,当我打印这个时:intmain(){printf("%d",sizeof(int*));}结果是8,这更有意义。问题是:由于我使用的是64位机器,因此int等原始类型不应该使用8个字节(64位),那么sizeofint应该是8?为什么不是这样?为什么int*的大小是8?这里有点困惑,先谢谢了。 最佳答案 不,sizeof(in

c++ - 在 sizeof(++n) 表达式中不调用增量运算符

这个问题在这里已经有了答案:Whydoessizeof(x++)notincrementx?(10个回答)关闭2年前。在C或C++中,递增和递减运算符(++n、--n)在sizeof()运算符。intn=100;intsize_int=sizeof(++n);std::cout我已经编写了这段代码并运行了程序。当然,我认为101会为我展示。但是,n不是101,而是100。这是为什么呢? 最佳答案 在C++中,sizeof中的表达式不被计算,除了C99的VLA如评论中所述,因为这之前也被标记为Csizeof运算符是在编译时计算的。只有