Tag: short

为什么短*而不是char *为字符串? char *和unsigned char *之间的区别?

正如标题所说,我有两个问题。 编辑 :为了澄清,他们实际上并没有使用char和short ,他们确保它们是特定typedef的8位和16位。 然后将实际类型称为UInt8和UInt16 。 1.问题 iTunes SDK使用unsigned short* ,需要字符串 。 使用它而不是char* / unsigned char*什么好处? 如何将其转换为char* ,以及使用此类型时有何不同? 2.问题 我只看到char*当时必须存储一个字符串。 我什么时候应该使用unsigned char* ,或者它没有任何区别?

将int数组转换为short *时,为什么为元素赋值会覆盖整个整数?

我正在观看Jerry Cain的Programming Paradigms Lecture 3video ,其中展示了在int数组和短数组之间进行元素分配后的效果。 本质上,参数是如果你要分配一个int数组元素arr[3] = 128 ,然后暂时将int数组转换为short *并指定arr[6] = 2 ,则arr [3]应该变为128 + 512 = 640因为2将被解释为处于第2 ^ 9位置。 代码演示: #include int main() { printf(“sizeof(int) is %lu\n”, sizeof(int)); printf(“sizeof(short) is %lu\n”, sizeof(short)); int arr[5]; arr[3] = 128; ((short*)arr)[6] = 2; printf(“arr[3] is equal to %d\n”, arr[3]); //expect 640, get 2 instead return 0; […]

关于C中短数据类型格式说明符的混淆

考虑以下计划: #include int main() { short a=9; //printf(“%hi\n”,a); printf(“%d”,a); // LINE 6 } 根据这个 ,短类型(签名)的格式说明符是%hi 短行型变量是否总是在对它执行任何操作之前自动提升为int ? 它是未定义的行为,如果我使用%d格式说明符来打印此程序中的变量值? 我使用gcc -Wall -Wextra -WFormat选项编译它,但仍然编译器没有显示任何单个警告。 为什么?

将int转换为C中的short

我有: int a = 2147483647; short b = (short)a; 我得到b = -1而我希望int32转换为int16 ( short )。 我希望看到一些价值而不是 -1 。 请有人帮帮我。

在C中查找short int变量的最大值

我正在研究K&R的练习2-1,目标是计算不同变量类型的范围,下面是我计算short int可以包含的最大值的函数: short int max_short(void) { short int i = 1, j = 0, k = 0; while (i > k) { k = i; if (((short int)2 * i) > (short int)0) i *= 2; else { j = i; while (i + j <= (short int)0) j /= 2; i += j; } […]

当printf的相应参数不是short / char时,使用h或hh长度修饰符是不合法的吗?

printf系列提供了一系列长度修饰符,其中两个是hh (表示有signed char或unsigned char参数提升为int )和h (表示有signed short或unsigned short参数,提升为int )。 从历史上看,这些长度修改器仅用于创建与scanf的长度修饰符对称,并且很少用于printf 。 以下是ISO 9899:2011§7.21.6.1“fprintf函数”¶7的摘录: 7长度修饰符及其含义是: hh指定以下d , i , o , u , x或X转换说明符适用于signed char或unsigned char参数(该参数将根据整数提升进行提升,但其值应转换为signed char或打印前unsigned char ); 或者后面的n转换说明符适用于指向signed char参数的指针。 h指定以下d , i , o , u , x或X转换说明符适用于short int或unsigned short int参数(该参数将根据整数提升进行提升,但其值应转换为short int打印前的short int或unsigned short int ); 或者后面的n转换说明符适用于指向short int参数的指针。 … 忽略n转换说明符的情况,这些几乎相同的段落对h和hh的行为有何看法? 在这个答案中 ,声称传递的参数超出了signed char , […]

wchar_t只是unsigned short的typedef吗?

例如,确实: wchar_t x; 翻译成: unsigned short x;