C语言关于数组问题

zjian1425 2017-06-26 05:06:07
比如说我申请了一个int类型的a[10]数组,我想知道每个单元位置就是比如在a[0]这个位置我最大能存放的数字是多大啊。还有这个数字的数值范围也和 int a(-2147483648~2147483647 ) 、long long int a(-9223372036854775808~9223372036854775807)一样和其本身所定义的类型一样存在关系么?是不是可以定义一个 long long int a[],这样可以么,我想每一个数组单元了都存一个很大的数(11位的)。
...全文
176 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2017-06-27
  • 打赏
  • 举报
回复
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 */
谁学逆向工程 2017-06-27
  • 打赏
  • 举报
回复
元素大小和你类型的是一样的,比如你可以sizeof(int)看看
paschen 2017-06-27
  • 打赏
  • 举报
回复
你数组是int类型的,那里面所有元素都是int能表示的范围 你数组是long long into类型的,那里面所有元素都是long long int 能表示的范围 同理其他类型
xy_kok 2017-06-26
  • 打赏
  • 举报
回复
每个元素的存储范围由数组类型决定。 比如int arr[10]; 那么数组中的每一个元素都是int类型的,其存储范围也就是int的存储范围,具体数值大小,看一下limits.h更准确一些。 可以定义long long int a[10]; 类型的数组,每个元素都是long long int 类型的,但定义数组的不可丢掉数组长度。
自信男孩 2017-06-26
  • 打赏
  • 举报
回复
引用 3 楼 zj19941201 的回复:
[quote=引用 1 楼 cfjtaishan 的回复:] 定义的数组,数组中每个元素存放的值的范围跟该数组元素的类型有关,数组元素的类型决定了存放的值的范围; C语言中定义的数组需要指定其长度,因此定义long long int a[]是缺少长度的,定义不合法。
我想要问的问题你没弄清呢,我不是说数组的长度,我说的是数组的成员所能存放的数值范围[/quote] 嗯?我说了,是由其数组类型决定其存放的值的范围。
赵4老师 2017-06-26
  • 打赏
  • 举报
回复
为什么不打开include\limits.h亲自看一看呢?
zjian1425 2017-06-26
  • 打赏
  • 举报
回复
引用 2 楼 versatts 的回复:
可以,你定义什么类型的数组,它的成员就是什么类型。
哦哦,明白了,我试试看。
zjian1425 2017-06-26
  • 打赏
  • 举报
回复
引用 1 楼 cfjtaishan 的回复:
定义的数组,数组中每个元素存放的值的范围跟该数组元素的类型有关,数组元素的类型决定了存放的值的范围; C语言中定义的数组需要指定其长度,因此定义long long int a[]是缺少长度的,定义不合法。
我想要问的问题你没弄清呢,我不是说数组的长度,我说的是数组的成员所能存放的数值范围
versatts 2017-06-26
  • 打赏
  • 举报
回复
可以,你定义什么类型的数组,它的成员就是什么类型。
自信男孩 2017-06-26
  • 打赏
  • 举报
回复
定义的数组,数组中每个元素存放的值的范围跟该数组元素的类型有关,数组元素的类型决定了存放的值的范围; C语言中定义的数组需要指定其长度,因此定义long long int a[]是缺少长度的,定义不合法。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧