草庐IT

WPRINTF_SIZEOF

全部标签

c++ - 如果 T 是一个函数,不要对 T 使用 sizeof

我有近乎以下的结构来检测类型是否可以按值传递:templatestructshould_be_passed_by_value{staticconstexprboolvalue=std::is_scalar::value||std::is_array::value||std::is_reference::value||(sizeof(T)问题是:当我为类C函数指针或std::function实例化它时,编译器说:invalidapplicationof'sizeof'toafunctiontype(当然)。如何修改它以使value包含false? 最佳答案

c++ - 不评估应用了 sizeof 的表达式是否使得在 C++ 中取消引用 sizeof 内的空指针或无效指针是合法的?

首先,我见过thisquestionaboutC99并且接受的答案引用了C99标准草案中的operandisnotevaluate措辞。我不确定这个答案是否适用于C++03。还有thisquestionaboutC++有一个接受的答案,引用了类似的措辞,并且在某些情况下,会出现未评估的操作数。未计算的操作数不会被计算。措辞。我有这个代码:int*ptr=0;void*buffer=malloc(10*sizeof(*ptr));问题是-sizeof()内是否有空指针取消引用(以及UB)?C++035.3.3/1说sizeof运算符在其操作数的对象表示中产生字节数。操作数要么是一个未计算

c++ - 不评估应用了 sizeof 的表达式是否使得在 C++ 中取消引用 sizeof 内的空指针或无效指针是合法的?

首先,我见过thisquestionaboutC99并且接受的答案引用了C99标准草案中的operandisnotevaluate措辞。我不确定这个答案是否适用于C++03。还有thisquestionaboutC++有一个接受的答案,引用了类似的措辞,并且在某些情况下,会出现未评估的操作数。未计算的操作数不会被计算。措辞。我有这个代码:int*ptr=0;void*buffer=malloc(10*sizeof(*ptr));问题是-sizeof()内是否有空指针取消引用(以及UB)?C++035.3.3/1说sizeof运算符在其操作数的对象表示中产生字节数。操作数要么是一个未计算

c++ - 我们什么时候应该使用带括号和不带括号的 sizeof

这个问题在这里已经有了答案:Whatdoessizeofwithout()do?[duplicate](5个回答)关闭7年前。typedefstructrem{intaddr;charaddrbuf[32];}foo;这两个代码都返回相同的结果fooaddr;printf("sizeis:%d\n",sizeofaddr);printf("sizeis:%d\n",sizeof(foo));大小为:36大小为:36但是我们什么时候应该使用带括号和不带括号的sizeof? 最佳答案 当将sizeof与type一起使用时,您需要在类型周

c++ - 我们什么时候应该使用带括号和不带括号的 sizeof

这个问题在这里已经有了答案:Whatdoessizeofwithout()do?[duplicate](5个回答)关闭7年前。typedefstructrem{intaddr;charaddrbuf[32];}foo;这两个代码都返回相同的结果fooaddr;printf("sizeis:%d\n",sizeofaddr);printf("sizeis:%d\n",sizeof(foo));大小为:36大小为:36但是我们什么时候应该使用带括号和不带括号的sizeof? 最佳答案 当将sizeof与type一起使用时,您需要在类型周

c++ - sizeof 的成本是多少?

sizeof的成本是多少?我希望:sizeof(someclass)可以在编译时知道sizeof(someStaticArray)可以在编译时知道sizeof(someDynamicArray)可以不在编译时知道那么最后一个案例是如何工作的呢? 最佳答案 C中的sizeof结构是一个完全编译时的结构。没有运行时成本。这条规则至少有一个异常(exception):可变长度数组。这些数组的大小是在运行时计算的,并且该大小被应用到它们的任何sizeof运算符重用。请注意可变长度数组和动态数组之间存在差异。C99中添加了可变长度数组,它们确

c++ - sizeof 的成本是多少?

sizeof的成本是多少?我希望:sizeof(someclass)可以在编译时知道sizeof(someStaticArray)可以在编译时知道sizeof(someDynamicArray)可以不在编译时知道那么最后一个案例是如何工作的呢? 最佳答案 C中的sizeof结构是一个完全编译时的结构。没有运行时成本。这条规则至少有一个异常(exception):可变长度数组。这些数组的大小是在运行时计算的,并且该大小被应用到它们的任何sizeof运算符重用。请注意可变长度数组和动态数组之间存在差异。C99中添加了可变长度数组,它们确

c++ - alignas 会影响 sizeof 的值吗?

#includeusingnamespacestd;intmain(){alignas(double)unsignedcharc[1024];//arrayofcharacters,suitablyalignedfordoublesalignas(16)chard[100];//alignon16byteboundarycout这里是代码,对于alignas(double)unsignedcharc[1024];,意思是c应该用double对齐>,double为8个字节。所以我认为sizeof(c)应该是1024*8字节,但是控制台输出的是1024。所以我很困惑。谁能告诉我原因?

c++ - alignas 会影响 sizeof 的值吗?

#includeusingnamespacestd;intmain(){alignas(double)unsignedcharc[1024];//arrayofcharacters,suitablyalignedfordoublesalignas(16)chard[100];//alignon16byteboundarycout这里是代码,对于alignas(double)unsignedcharc[1024];,意思是c应该用double对齐>,double为8个字节。所以我认为sizeof(c)应该是1024*8字节,但是控制台输出的是1024。所以我很困惑。谁能告诉我原因?

c++ - 为什么 std::bitset 建议的可用位比 sizeof 所说的更多?

我正在处理C++中的一些简单的位操作问题,并在尝试可视化我的步骤时遇到了这个问题。我了解分配给不同原始类型的位数可能因系统而异。对于我的机器,sizeof(int)输出4,所以我的值有4个char位。我现在也知道一个字节的定义通常是8位,但不一定是这样。当我输出CHAR_BIT时,我得到8。因此,我希望我的int值总共有32位。然后我可以继续将我的int的二进制值打印到屏幕上:intmax=~0;//Allmybitsareturnedonnowstd::cout(max)如果我愿意,我可以增加bitset大小:intmax=~0;std::cout(max)为什么会有这么多?我本来希