sizeof是指标准C / C ++运算符,用于返回表达式或数据类型的字节大小。
32 位数据模型与各种 64 位数据模型的 sizeof(size_t) 是多少?
在64位系统上,sizeof(unsigned long)取决于系统实现的数据模型,例如LLP64(Windows)上为4字节,LP64(Linux等)上为8字节。 sizeof(size_t) 是多少
考虑以下代码: int main() { int arr[] = {1,2,3,7,8}; std::size_t 大小 = sizeof arr; std::cout << size << '\n'; } I know that the above code will print the siz...
考虑以下代码: int main(){ int arr[] = {1,2,3,7,8}; int 大小 = sizeof(arr); 计算<< size; } I know that the above code will print the size of the array which is 4*5...
Visual Studio 2010 C++ 编译器为类分配错误的大小
目前,我正在通过 dllexport 从 DLL 导出一些类,并且我正在将私有成员设为私有,因此我为 DLL 提供的标头不包含任何私有内容。 问题是:...
Java中没有sizeof运算符是什么设计原因?知道它在 C++ 和 C# 中非常有用,那么如果需要的话如何获取某种类型的大小呢?
char string0[]=“0123456789”; // sizeof(string0)=11 char string1[11]="0123456789A"; // sizeof(字符串1)=11 string1 的情况很清楚,为字符分配了 11 个字节加上一个 f...
为什么这段代码中sizeof显示8字节? int有4个字节 char有1个字节 为什么 sizeof 不显示 5 个字节? #包括 #包括 int 主函数(无效) { 结构测试 { ...
在以下代码中,D1 和 D2 具有相同的数据成员。 但是,根据基类的最后一个成员是否初始化,对象大小会有所不同。 #包括 在下面的代码中,D1和D2都有相同的数据成员。 但是,根据基类最后一个成员是否初始化,对象大小会有所不同。 #include <cstdint> struct B1 { int x; short y = 0; }; struct D1 : B1 { short z; }; struct B2 { int x; short y; }; struct D2 : B2 { short z; }; static_assert(sizeof(D1) == sizeof(D2)); GCC 14.2(和 Clang 18.0.1)失败并显示: <source>:7:26: error: static assertion failed 7 | static_assert(sizeof(D1) == sizeof(D2)); | ~~~~~~~~~~~^~~~~~~~~~~~~ <source>:7:26: note: the comparison reduces to '(8 == 12)' 此行为的解释是什么? 这是与 C 兼容的任意 ABI 选择。 在 GCC 和 Clang 使用的 Itanium C++ ABI 中,出于布局目的,B2 被认为是微不足道的,而 B1 则不然。 (这是合理的,因为 B2 也是有效的 C 类型,而 B1 则不是。) ABI 指定只有当类型的尾部填充对于布局而言不重要时才会被重用。 (因此,如果基类类型对于布局而言很简单,则基类子对象上的 memcpy 将是安全的。) B1和B2都有两个字节的尾部填充。 D1 将重用它来适应 z 成员,而 D2 不会,而是将两个填充字节留空。因为整个类的大小必须是其对齐方式的倍数,即由于 4 成员而导致 int,所以 D2 还需要添加两个额外的新尾部填充字节。
_通用长度函数在默认情况下失败:sizeof(x)/sizeof((x)[0])
问题: 最近我了解了_Generic。在我尝试将它用作通用长度宏时,我偶然发现了一个奇怪的问题。虽然 LENA(x) 工作得很好,但通用的 LEN(x) 无法编译 u...
考虑这个 C 程序 #包括 #define TOTAL_ELEMENTS (sizeof(arr))/sizeof(arr[0]) int arr[] = {23, 34, 12, 17, 204, 99, 16}; int main() { 整数d; printf("%ld ”,
我有一个关于操作符 sizeof() 的问题。 如果您可以在下面的图片中看到我的代码: C++代码 代码运行结果图 当我使用 sizeof(command) 时,它告诉我数字...
我有一个关于函数 sizeof() 的问题。 如果您可以在下面的图片中看到我的代码: 在此输入图像描述 在此输入图像描述 当我使用 sizeof(command) 时,它告诉我......
如何在 g++ 下的预处理器中检查无符号的大小? sizeof 是不可能的,因为它在预处理期间没有定义。
STL容器尺寸有要求吗?例如,我可以使用 Node 实现 std::list,如下所示: 结构节点 { 节点*左; 节点*右; T值; }; 并存储两点...
我一直在玩uprobes。为了在运行时探测特定对象,我需要知道内部 go 结构的大小。就我而言,是 poll.FD。我可以手动计算每个嵌套结构,但是...
SFINAE 工作正常,但概念约束在类模板实例化中进行了模糊的推论
我正在编写一个曲线类,它可以采用算术类型或算术数组类型作为模板参数。 对于算术数组曲线,本身需要一个包含算术c的数组成员...
我想计算小数位数。当你接触像 C++ 这样的低级语言,甚至大多数编程语言时,没有什么明确的方法可以解决问题。相反,特定的空间被分配给...
当我在函数指针中传递 B[2][3] 2D 数组时,预期会衰减。 然而,这似乎只发生在我作为语法参数传递的内容中。 这是我的代码: #包括 当我在函数指针中传递 B[2][3] 2D 数组时,预期会衰减。 然而,这似乎仅在我作为语法参数传递的内容中选择性地发生。 这是我的代码: #include<stdio.h> void printArray(int B[][3]) { printf("sizeof(B) is : %u\n", sizeof(B)); //When arrays are passed to functions they decay into pointers. printf("sizeof(B[0]) is : %u\n", sizeof(B[0])); //But here I get an array-pointer.Why there is no array to pointer decay here?See results Below. } int main(int argc, char* argv[]) { int B[2][3] = { {2,3,6},{4,5,8} }; printf("sizeof(B) is : %u\n", sizeof(B)); printf("sizeof(B[0]) is : %u\n", sizeof(B[0])); printArray(B); return 0; } 这是我的结果: sizeof(B) is : 24 sizeof(B[0]) is : 12 sizeof(B) is : 4 sizeof(B[0]) is : 12 C:\Users\Strakizzz\Desktop\C\My Codeschool Projects\Pointers in C?C++\Debug\FunctionsPointersScopeMayhem.exe (process 20660) exited with code 0. To automatically close the console when debugging stops, enable Tools->Options->Debugging->Automatically close the console when debugging stops. Press any key to close this window . . . 我期望在从我调用的函数中打印 sizeof(B[0]) 时也能获得 4 个字节,就像我在同一函数中计算 sizeof(B) 时一样: void printArray(). .为什么我会得到这些结果,幕后发生了什么? 数组“衰减”发生在许多使用数组类型的上下文中,它用指向数组第一个元素的指针替换数组类型。所以 int a[5] 会衰减为 int *。 对于二维数组,即数组的数组,它的工作原理如下:int B[2][3]衰减为int (*)[3],它是指向三个int的数组的指针。这是因为 B 是一个包含两个元素的数组,每个元素都是一个包含三个 int 的数组。 在 printArray 中,编译器自动调整 B 为类型 int (*B)[3]。 B 是一个指针,在您的机器上其大小为 4,并且 B[0] 的类型为 int [3],因此它的大小为 sizeof(int) * 3,在您的机器上为 12。因此 printArray 打印 4 和 12。 可移植性注意事项:使用 %u 打印 sizeof 值(其类型为 size_t)是不可移植的。相反,请使用 %zu,它是便携式的。
根据定义,在stdarg.h typedef char* va_list.so中va_list的大小应该是8而不是ubuntu 20.04 64位gcc 9.4.0中的24,我不知道为什么我得到的va_list的大小是24? 我运行了以下...
我正在尝试用 C 语言编写一个程序来将元素插入数组。 我使用 sizeof 运算符来确定数组的元素总数,但在插入元素并重用 sizeof 运算符之后...