user-0 提问: C语言关于数组问题

回复:
user: user-1
content: C:\Program Files\Microsoft Visual Studio 10.0\VC\crt\src\limits.h /*** *limits.h - implementation dependent values * *       Copyright (c) Microsoft Corporation.  All rights reserved. * *Purpose: *       Contains defines for a number of implementation dependent values *       which are commonly used in C programs. *       [ANSI] * *       [Public] * ****/  #pragma once  #include <crtdefs.h>  #ifndef _INC_LIMITS #define _INC_LIMITS  #ifndef _CRTBLD /* This version of the header files is NOT for user programs.  * It is intended for use when building the C runtimes ONLY.  * The version intended for public use will not have this message.  */ #error ERROR: Use of C runtime library internal header file. #endif  /* _CRTBLD */  #define CHAR_BIT      8         /* number of bits in a char */ #define SCHAR_MIN   (-128)      /* minimum signed char value */ #define SCHAR_MAX     127       /* maximum signed char value */ #define UCHAR_MAX     0xff      /* maximum unsigned char value */  #ifndef _CHAR_UNSIGNED #define CHAR_MIN    SCHAR_MIN   /* mimimum char value */ #define CHAR_MAX    SCHAR_MAX   /* maximum char value */ #else  /* _CHAR_UNSIGNED */ #define CHAR_MIN      0 #define CHAR_MAX    UCHAR_MAX #endif  /* _CHAR_UNSIGNED */  #define MB_LEN_MAX    5             /* max. # bytes in multibyte char */ #define SHRT_MIN    (-32768)        /* minimum (signed) short value */ #define SHRT_MAX      32767         /* maximum (signed) short value */ #define USHRT_MAX     0xffff        /* maximum unsigned short value */ #define INT_MIN     (-2147483647 - 1) /* minimum (signed) int value */ #define INT_MAX       2147483647    /* maximum (signed) int value */ #define UINT_MAX      0xffffffff    /* maximum unsigned int value */ #define LONG_MIN    (-2147483647L - 1) /* minimum (signed) long value */ #define LONG_MAX      2147483647L   /* maximum (signed) long value */ #define ULONG_MAX     0xffffffffUL  /* maximum unsigned long value */ #define LLONG_MAX     9223372036854775807i64       /* maximum signed long long int value */ #define LLONG_MIN   (-9223372036854775807i64 - 1)  /* minimum signed long long int value */ #define ULLONG_MAX    0xffffffffffffffffui64       /* maximum unsigned long long int value */  #define _I8_MIN     (-127i8 - 1)    /* minimum signed 8 bit value */ #define _I8_MAX       127i8         /* maximum signed 8 bit value */ #define _UI8_MAX      0xffui8       /* maximum unsigned 8 bit value */  #define _I16_MIN    (-32767i16 - 1) /* minimum signed 16 bit value */ #define _I16_MAX      32767i16      /* maximum signed 16 bit value */ #define _UI16_MAX     0xffffui16    /* maximum unsigned 16 bit value */  #define _I32_MIN    (-2147483647i32 - 1) /* minimum signed 32 bit value */ #define _I32_MAX      2147483647i32 /* maximum signed 32 bit value */ #define _UI32_MAX     0xffffffffui32 /* maximum unsigned 32 bit value */  /* minimum signed 64 bit value */ #define _I64_MIN    (-9223372036854775807i64 - 1) /* maximum signed 64 bit value */ #define _I64_MAX      9223372036854775807i64 /* maximum unsigned 64 bit value */ #define _UI64_MAX     0xffffffffffffffffui64  #if _INTEGRAL_MAX_BITS >= 128 /* minimum signed 128 bit value */ #define _I128_MIN   (-170141183460469231731687303715884105727i128 - 1) /* maximum signed 128 bit value */ #define _I128_MAX     170141183460469231731687303715884105727i128 /* maximum unsigned 128 bit value */ #define _UI128_MAX    0xffffffffffffffffffffffffffffffffui128 #endif  /* _INTEGRAL_MAX_BITS >= 128 */  #ifndef SIZE_MAX #ifdef _WIN64 #define SIZE_MAX _UI64_MAX #else  /* _WIN64 */ #define SIZE_MAX UINT_MAX #endif  /* _WIN64 */ #endif  /* SIZE_MAX */  #if __STDC_WANT_SECURE_LIB__ /* While waiting to the C standard committee to finalize the decision on RSIZE_MAX and rsize_t,  * we define RSIZE_MAX as SIZE_MAX  */ #ifndef RSIZE_MAX #define RSIZE_MAX SIZE_MAX #endif  /* RSIZE_MAX */ #endif  /* __STDC_WANT_SECURE_LIB__ */   #endif  /* _INC_LIMITS */

user: user-2
content: 元素大小和你类型的是一样的，比如你可以sizeof(int)看看

user: user-3
content: 你数组是int类型的，那里面所有元素都是int能表示的范围  你数组是long long into类型的，那里面所有元素都是long long int 能表示的范围  同理其他类型

user: user-4
content: 每个元素的存储范围由数组类型决定。 比如int arr[10];  那么数组中的每一个元素都是int类型的，其存储范围也就是int的存储范围，具体数值大小，看一下limits.h更准确一些。  可以定义long  long int a[10]; 类型的数组，每个元素都是long long int 类型的，但定义数组的不可丢掉数组长度。

user: user-5
content: 引用 3 楼 zj19941201 的回复:[quote=引用 1 楼 cfjtaishan 的回复:] 定义的数组，数组中每个元素存放的值的范围跟该数组元素的类型有关，数组元素的类型决定了存放的值的范围； C语言中定义的数组需要指定其长度，因此定义long long int a[]是缺少长度的，定义不合法。  我想要问的问题你没弄清呢，我不是说数组的长度，我说的是数组的成员所能存放的数值范围[/quote] 嗯？我说了，是由其数组类型决定其存放的值的范围。

user: user-1
content: 为什么不打开include\limits.h亲自看一看呢？

user: user-0
content: 引用 2 楼 user-6 的回复:可以，你定义什么类型的数组，它的成员就是什么类型。  哦哦，明白了，我试试看。

user: user-0
content: 引用 1 楼 cfjtaishan 的回复:定义的数组，数组中每个元素存放的值的范围跟该数组元素的类型有关，数组元素的类型决定了存放的值的范围； C语言中定义的数组需要指定其长度，因此定义long long int a[]是缺少长度的，定义不合法。  我想要问的问题你没弄清呢，我不是说数组的长度，我说的是数组的成员所能存放的数值范围

user: user-6
content: 可以，你定义什么类型的数组，它的成员就是什么类型。

user: user-5
content: 定义的数组，数组中每个元素存放的值的范围跟该数组元素的类型有关，数组元素的类型决定了存放的值的范围； C语言中定义的数组需要指定其长度，因此定义long long int a[]是缺少长度的，定义不合法。