sizeof相关内容

具有类型或变量的sizeof

最近看到有人称赞另一个用户使用sizeof var而不是sizeof(Type)。我一直以为那只是一种风格选择。有什么显著的区别吗?例如,带f和ff的线被认为比带g和gg的线更好: typedef struct _foo {} foo; foo *f = malloc(count * sizeof f); foo *g = malloc(sizeof(foo) * count); ..
发布时间:2022-02-28 10:48:15 其他开发

sizeof(some pointer) 是否总是等于四?

例如:sizeof(char*) 返回 4.正如 int*、long long* 以及我尝试过的所有内容一样.有没有例外? 解决方案 你得到的保证是 sizeof(char) == 1.没有其他保证,包括不保证 sizeof(int *) == sizeof(double *). 实际上,在 16 位系统上,指针大小为 2(如果你能找到的话),在 32 位系统上为 4,在 64 位系 ..
发布时间:2022-01-31 10:09:05 C/C++开发

具有函数的类的c ++ sizeof()

我有一个 C++ 问题.我写了以下课程: c 类{int f(int x, int y){ 返回 x;}}; c 类的 sizeof() 返回“1".我真的不明白为什么它会返回 1. 为了更好地理解发生了什么,我添加了另一个函数: c 类{int f(int x, int y){ 返回 x;}int g(int x, int y){ 返回 x;}}; 现在下面真的让我很困惑!size ..
发布时间:2022-01-17 08:11:12 C/C++开发

为什么 int 在 64 位编译器上通常是 32 位?

为什么 int 在 64 位编译器上通常是 32 位?当我开始编程时,我被教导 int 通常与底层架构具有相同的宽度.而且我同意这也是有道理的,我发现未指定宽度的整数与底层平台一样宽是合乎逻辑的(除非我们谈论的是 8 位或 16 位机器,其中 int 几乎不适用). 后来我了解到 int 在大多数 64 位平台上通常是 32 位的.所以我想知道这是什么原因.对于存储数据,我更喜欢明确指定的数 ..
发布时间:2022-01-14 14:43:30 C/C++开发

有什么理由不使用固定宽度的整数类型(例如 uint8_t)?

假设您使用的是支持 C99(甚至只是 stdint.h)的编译器,是否有任何理由不使用 uint8_t 等固定宽度整数类型? 我知道的一个原因是,在处理字符时使用 chars 比使用 (u)int8_ts 更有意义,因为这个问题中提到. 但是如果你打算存储一个数字,你什么时候想使用一个你不知道它有多大的类型呢?IE.在什么情况下,您希望在 unsigned short 中存储一个数字, ..
发布时间:2022-01-14 14:34:12 其他开发

为什么-1 >大小(整数)?

考虑以下代码: 模板类静态断言;模板类 StaticAssert{};静态断言 sizeof(int)) >xyz2;//行 为什么是 -1 >sizeof(int) 是吗? -1是不是真的提升为unsigned(-1)然后unsigned(-1)>sizeof(int). -1 > 是真的吗?sizeof(int) 等价于 -1 >size_t(4) 如果 sizeo ..
发布时间:2022-01-12 23:44:28 C/C++开发

如何知道传递给函数的 char 数组的大小(以字节为单位)?

我正在测试 sizeof 运算符.在我的代码中的两种情况下,我得到了 指针的大小(我认为).在其他情况下,我得到数组占用多少字节.当我将数组传递给函数时,如何获取以字节为单位的数组大小?sizeof 运算符还不够吗?我做错了吗? #include /*测试算子sizeof*/无效测试(字符数组T []);无效 test2 (char *arrayU);int main(int ..
发布时间:2022-01-12 21:03:02 其他开发

C sizeof char 指针

为什么这个 char 变量的大小等于 1? int main(){char s1[] = "你好";fprintf(stderr, "(*s1) : %i\n", sizeof(*s1) )//打印出 1} 解决方案 NOTA: 原来的问题一开始有点变化是:为什么这个char指针的大小是1p> sizeof(*s1) 和 一样 sizeof(s1[0]) 是 char 对象的大小 ..
发布时间:2022-01-12 20:48:30 其他开发

使用 malloc 分配 char 数组

考虑以下行: char *p = malloc( sizeof(char) * ( len + 1 ) ); 为什么要使用 sizeof(char)?这没有必要,不是吗?还是只是风格问题? 它有什么优势? 解决方案 是的,这是风格问题,因为您希望 sizeof(char) 始终为一. 另一方面,在执行 malloc 时使用 sizeof(foo) 是一种习惯用法,最重要的是 ..
发布时间:2022-01-12 20:43:07 其他开发

为什么 sizeof(char + char) 返回 4?

字符 a, b;printf("%d", sizeof(a+b)); printf 会在屏幕上写什么? 我以为因为sizeof(char)=1,所以sizeof(a+b)也会是1,结果竟然是4.我不明白,为什么加2会写4字符? 解决方案 在 C 语言中,几乎所有算术运算符的操作数都经过隐式转换,称为 通常的算术转换,在这种情况下,整数促销.char 类型的操作数被提升为 int 类 ..
发布时间:2022-01-12 20:26:18 其他开发

为什么 sizeof('a') 在 C 中是 4?

可能重复: 为什么 C 字符文字是整数而不是字符? #include诠释主要(无效){字符 b = 'c';printf("这里的大小是 %zu\n",sizeof('a'));printf("这里的大小是 %zu",sizeof(b));} 这里的输出是(查看现场演示这里.) 这里的大小是 4这里大小是 1 我不明白为什么 sizeof('a') 是 4 ? 解 ..
发布时间:2022-01-12 20:11:26 其他开发

在 C 中,为什么 sizeof(char) 为 1,而 'a' 是 int?

我试过了 printf("%d, %d\n", sizeof(char), sizeof('c')); 并得到 1, 4 作为输出.如果一个字符的大小是 1,为什么 'c' 给我 4?我想这是因为它是一个整数.因此,当我执行 char ch = 'c'; 时,当它被分配给 char 变量时,是否存在从 4 字节值到 1 字节值的隐式转换? 解决方案 在 C 中,'a' 是一个整 ..
发布时间:2022-01-12 20:04:27 其他开发

是否有机器,sizeof(char) != 1,或至少 CHAR_BIT >8?

是否有机器(或编译器),其中 sizeof(char) != 1? C99 标准 是否规定标准合规实施上的 sizeof(char) 必须正好为 1?如果有,请给我章节号和引文. 更新:如果我有一台机器(CPU),它不能寻址字节(最小读取是 4 个字节,对齐),但只有 4-s 字节(uint32_t),可以为此编译机器将 sizeof(char) 定义为 4? sizeof(char) ..
发布时间:2022-01-12 19:58:16 其他开发

“%d"需要“int"类型的参数,但参数 2 的类型为“long unsigned int"[-Wformat=]

我不断收到编译警告,但我不知道如何解决: '%d' 需要类型为 'int' 的参数,但参数 2 的类型为 'long unsigned int' [ 程序运行良好,但我仍然收到编译警告: /* Sizeof.c--告诉C变量字节大小的程序*/#include int main(void) {printf("\n一个字符是 %d 个字节", sizeof( char ));printf("\n ..
发布时间:2022-01-04 21:20:31 其他开发