gpt4 book ai didi

c - unsigned short int 与 unsigned int 有何不同

转载 作者:太空宇宙 更新时间:2023-11-04 01:33:12 25 4
gpt4 key购买 nike

#include<stdio.h>
int main()
{
unsigned short int x=-10;
short int y=-10;
unsigned int z=-10000000;
int m=-10000000;

printf("x=%d y=%d z=%d m=%d",x,y,z,m);
return 0;
}

输出=x=65526 y=-10 z=-10000000 m=-10000000

我的问题是unsigned short int在数据保存场景中与unsigned int有何不同。即 x=65526 where as z=-10000000 why x is not equal -10 where as z can hold any data 由于 short 是 2 字节所以 twos complement -10 is 65526但为什么在 z

case 中不一样

最佳答案

unsigned short int x=-10;发生,x , 无符号, 得到 65526 的模数或“包装”值(OP sizeof(short) 为 2)。类似于 x = power(256,sizeof(unsigned short)) - 10 .

x被打印,它被传递给printf()作为int (变量提升)。 OP 的 sizeof(int) 是 4,所以 65526 适合 int .那么printf()看到 %d并打印“65526”。

z有类似的故事,但 sizeof(z) 是 4。并被初始化 z = power(256,sizeof(unsigned)) - 10 .

你的 printf()正在使用 %d unsigned 的说明符. OP应该使用%u .

printf("x=%u y=%d z=%u m=%d",x,y,z,m);

unsigned short int保证至少覆盖 0 到 65535 的范围。

unsigned int保证覆盖 至少 unsigned short int 的范围.它可能涵盖的范围更广。

unsigned int通常是处理器最佳使用的 native 大小 - 通常最快。

作为unsigned short int在某些实现中,小于 unsigned int .它是大型阵列节省空间的首选。

关于c - unsigned short int 与 unsigned int 有何不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19335839/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com