C中数据类型的大小、最小值和最大值
我需要确定C中以下类型的大小、最小值和最大值:C中数据类型的大小、最小值和最大值,c,types,size,unsigned,C,Types,Size,Unsigned,我需要确定C中以下类型的大小、最小值和最大值: 煤焦 无符号字符 短 int 无符号整数 无符号长 浮动 我希望有人能帮我澄清以下几点: 在这种情况下,“尺寸”一词的确切含义是什么 例如,我编写了以下代码: #include <stdio.h> #include <limits.h> #include <float.h> int main(void) { char c; int h = sizeof(c); printf("%.6
- 煤焦
- 无符号字符
- 短
- int
- 无符号整数
- 无符号长
- 浮动
#include <stdio.h>
#include <limits.h>
#include <float.h>
int main(void)
{
char c;
int h = sizeof(c);
printf("%.6d\n", h);
int n;
h = sizeof(n);
printf("%.6d\n", h);
}
#包括
#包括
#包括
内部主(空)
{
字符c;
int h=尺寸f(c);
printf(“%.6d\n”,h);
int n;
h=尺寸f(n);
printf(“%.6d\n”,h);
}
它输出1表示字符,4表示整数。这些数字是什么意思
INT\u MAX
unsigned int
用于从0到4294967295(4字节int)的数字,而int
存储从-2147483648到2147483647(同样是4字节int)的数字h=sizeof(n)
,sizeof
是对象在内存中占用的字节数。在C语言中,一个“字节”通常是8位,但可能更多。使用字符位
非位字段的最小对象的位数(字节)字符位8
(最小值)C11 dr§5.2.4.2.1 1 存储在任何其他对象类型的非位字段对象中的值由n×
CHAR\u位
位组成,其中n是该类型对象的大小,以字节为单位§6.2.6.1 4 要正确计算和打印大小,请使用类型
size\u t
和“%zu”
示例输出-您的可能不同
char range -128 ... 127
unsigned char range 0 ... 255
short range -32768 ... 32767
int range -2147483648 ... 2147483647
unsigned int range 0 ... 4294967295
unsigned long range 0 ... 18446744073709551615
float finite range -3.40282347e+38 ... 3.40282347e+38
许多编译器支持浮点类型的+或+/-无穷大。这样,最大的浮点值
就是无穷大
。研究maging_VALF
,了解更多关于float
max的想法
整数类型缺少符号位。它的最小值是0。您需要阅读C编程语言。对于无符号类型,最大值是
(某些无符号类型)-1
。对于有符号类型,请使用诸如xxx\u MAX
之类的常量。对于特定类型变量可以表示的最小值和最大值,请查看“limits.h”中的内容,其中包含@chux引用的常量。至于输出中的值“1”或“4”意味着什么,它是“char”和“int”变量分别占据的八位字节数(即该变量的“sizeof”)。
// FP limits
#include <float.h>
// Standard integers
#include <limits.h>
// Fixed width, minimum width, fast integers
#include <stdint.h>
// Extended multibyte/wide characters
#include <wchar.h>
#include <stdio.h>
printf("char range %d ... %u\n", CHAR_MIN, CHAR_MAX);
printf("unsigned char range %u ... %u\n", 0, UCHAR_MAX);
printf("short range %d ... %d\n", SHRT_MIN, SHRT_MAX);
printf("int range %d ... %d\n", INT_MIN, INT_MAX);
printf("unsigned int range %u ... %u\n", 0, UINT_MAX);
printf("unsigned long range %lu ... %lu\n", 0, ULONG_MAX);
printf("float finite range %.*g ... %.*g\n", FLT_DECIMAL_DIG, -FLT_MAX,
FLT_DECIMAL_DIG, FLT_MAX);
char range -128 ... 127
unsigned char range 0 ... 255
short range -32768 ... 32767
int range -2147483648 ... 2147483647
unsigned int range 0 ... 4294967295
unsigned long range 0 ... 18446744073709551615
float finite range -3.40282347e+38 ... 3.40282347e+38