sizeof相关内容
考虑以下代码: template class StaticAssert; template class StaticAssert {}; StaticAssert xyz1; // Compile error StaticAssert sizeof(int)) > xyz2; // OK 为什么-1 >
..
最近看到有人称赞另一个用户使用sizeof var而不是sizeof(Type)。我一直以为那只是一种风格选择。有什么显著的区别吗?例如,带f和ff的线被认为比带g和gg的线更好: typedef struct _foo {} foo; foo *f = malloc(count * sizeof f); foo *g = malloc(sizeof(foo) * count);
..
例如:sizeof(char*) 返回 4.正如 int*、long long* 以及我尝试过的所有内容一样.有没有例外? 解决方案 你得到的保证是 sizeof(char) == 1.没有其他保证,包括不保证 sizeof(int *) == sizeof(double *). 实际上,在 16 位系统上,指针大小为 2(如果你能找到的话),在 32 位系统上为 4,在 64 位系
..
完整示例: #include 无效测试(int arr[]){int arrSize = (int)(sizeof(arr)/sizeof(arr[0]));printf("%d\n", arrSize);//2(错误?!)}int main (int argc, const char * argv[]) {整数点[3] = {50, 30, 12};int arrSize =
..
考虑以下功能: templateinline unsigned int myFunction(const List&... list){返回/* 一些东西 */;} 为了返回 sizeof 所有参数的总和,最简单的方法是什么而不是 /* SOMETHING */ ? 例如 myFunction(int, char, double) = 4+1+8 = 13 解决方案 unsign
..
char、signed char 和 unsigned char 的大小由 C++ 标准本身定义为 1 个字节.我想知道为什么它也没有定义 sizeof(bool) ? C++03 标准 $5.3.3/1 说, sizeof(char), sizeof(signed char) 和sizeof(unsigned char) 为 1;这sizeof 应用于任何其他的结果基本类型(3.9.
..
我在标准文档中找不到答案.C++ 语言标准是否要求 sizeof(bool) 始终为 1(对于 1 个字节),还是这个大小是实现定义的? 解决方案 sizeof(bool) 是实现定义的,标准特别强调了这一点. §5.3.3/1,删节: sizeof(char)、sizeof(signed char)和sizeof(unsigned char)为1;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
..
为什么 int 在 64 位编译器上通常是 32 位?当我开始编程时,我被教导 int 通常与底层架构具有相同的宽度.而且我同意这也是有道理的,我发现未指定宽度的整数与底层平台一样宽是合乎逻辑的(除非我们谈论的是 8 位或 16 位机器,其中 int 几乎不适用). 后来我了解到 int 在大多数 64 位平台上通常是 32 位的.所以我想知道这是什么原因.对于存储数据,我更喜欢明确指定的数
..
假设您使用的是支持 C99(甚至只是 stdint.h)的编译器,是否有任何理由不使用 uint8_t 等固定宽度整数类型? 我知道的一个原因是,在处理字符时使用 chars 比使用 (u)int8_ts 更有意义,因为这个问题中提到. 但是如果你打算存储一个数字,你什么时候想使用一个你不知道它有多大的类型呢?IE.在什么情况下,您希望在 unsigned short 中存储一个数字,
..
考虑以下代码: 模板类静态断言;模板类 StaticAssert{};静态断言 sizeof(int)) >xyz2;//行 为什么是 -1 >sizeof(int) 是吗? -1是不是真的提升为unsigned(-1)然后unsigned(-1)>sizeof(int). -1 > 是真的吗?sizeof(int) 等价于 -1 >size_t(4) 如果 sizeo
..
我正在测试 sizeof 运算符.在我的代码中的两种情况下,我得到了 指针的大小(我认为).在其他情况下,我得到数组占用多少字节.当我将数组传递给函数时,如何获取以字节为单位的数组大小?sizeof 运算符还不够吗?我做错了吗? #include /*测试算子sizeof*/无效测试(字符数组T []);无效 test2 (char *arrayU);int main(int
..
为什么这个 char 变量的大小等于 1? int main(){char s1[] = "你好";fprintf(stderr, "(*s1) : %i\n", sizeof(*s1) )//打印出 1} 解决方案 NOTA: 原来的问题一开始有点变化是:为什么这个char指针的大小是1p> sizeof(*s1) 和 一样 sizeof(s1[0]) 是 char 对象的大小
..
考虑以下行: char *p = malloc( sizeof(char) * ( len + 1 ) ); 为什么要使用 sizeof(char)?这没有必要,不是吗?还是只是风格问题? 它有什么优势? 解决方案 是的,这是风格问题,因为您希望 sizeof(char) 始终为一. 另一方面,在执行 malloc 时使用 sizeof(foo) 是一种习惯用法,最重要的是
..
字符 a, b;printf("%d", sizeof(a+b)); printf 会在屏幕上写什么? 我以为因为sizeof(char)=1,所以sizeof(a+b)也会是1,结果竟然是4.我不明白,为什么加2会写4字符? 解决方案 在 C 语言中,几乎所有算术运算符的操作数都经过隐式转换,称为 通常的算术转换,在这种情况下,整数促销.char 类型的操作数被提升为 int 类
..
可能重复: 为什么 C 字符文字是整数而不是字符? #include诠释主要(无效){字符 b = 'c';printf("这里的大小是 %zu\n",sizeof('a'));printf("这里的大小是 %zu",sizeof(b));} 这里的输出是(查看现场演示这里.) 这里的大小是 4这里大小是 1 我不明白为什么 sizeof('a') 是 4 ? 解
..
我试过了 printf("%d, %d\n", sizeof(char), sizeof('c')); 并得到 1, 4 作为输出.如果一个字符的大小是 1,为什么 'c' 给我 4?我想这是因为它是一个整数.因此,当我执行 char ch = 'c'; 时,当它被分配给 char 变量时,是否存在从 4 字节值到 1 字节值的隐式转换? 解决方案 在 C 中,'a' 是一个整
..
是否有机器(或编译器),其中 sizeof(char) != 1? C99 标准 是否规定标准合规实施上的 sizeof(char) 必须正好为 1?如果有,请给我章节号和引文. 更新:如果我有一台机器(CPU),它不能寻址字节(最小读取是 4 个字节,对齐),但只有 4-s 字节(uint32_t),可以为此编译机器将 sizeof(char) 定义为 4? sizeof(char)
..
我是 Linux 内核的新手.我正在读取文件 ioctl.h,在那里我遇到了一个宏_IOC_TYPECHECK(t),如下所示: #define _IOC_TYPECHECK(t) \((sizeof(t) == sizeof(t[1]) && \大小(t)<(1
..
我不断收到编译警告,但我不知道如何解决: '%d' 需要类型为 'int' 的参数,但参数 2 的类型为 'long unsigned int' [ 程序运行良好,但我仍然收到编译警告: /* Sizeof.c--告诉C变量字节大小的程序*/#include int main(void) {printf("\n一个字符是 %d 个字节", sizeof( char ));printf("\n
..