数组长度使用变量问题

wireboy 2013-05-17 08:01:10
/* Note:Your choice is C IDE */
#include "stdio.h"
void main()
{
int i, max; //声明变量
const int ts=5; //定义变量
int temp[ts] = {20,12,40,31,25}; //定义数组
printf("数组temp的元素为:\n"); //输出
for(i=0;i<ts;i++) //循环
{
printf("%d ",temp[i]); //输出数组元素
}
printf("\n"); //换行
max=temp[0]; //为变量赋值
for(i=1;i<ts;i++)
{
if (max<temp[i]) //条件判断
max=temp[i]; //得到较大值
}
printf("数组temp的最大值为:%d\n",max);
}
ts不是已经是const定义了吗?为什么还会错?
...全文
135 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wireboy 2013-05-17
  • 打赏
  • 举报
回复
引用 2 楼 qiminixi 的回复:
正常的C编译器会将const int 变量替换为对应的常量,像宏那样。 应该是这个编译器没有遵照C语言标准,也可能是编译器设置了不进行替换。你用的应该是C与C++实验系统吧,比较弱的IDE,看看设置里有没有是否替换的选项,没有的话就是编译器的问题了。
不是,用的是经典的VC6.0
wireboy 2013-05-17
  • 打赏
  • 举报
回复
这是书里的例题,他说是可以; 在另外一本书里又有一种说法"const说明的变量遵循和其他变量相同的作用域规则,不能用于常量表达式"好奇怪的两本书"
qiminixi 2013-05-17
  • 打赏
  • 举报
回复
正常的C编译器会将const int 变量替换为对应的常量,像宏那样。 应该是这个编译器没有遵照C语言标准,也可能是编译器设置了不进行替换。你用的应该是C与C++实验系统吧,比较弱的IDE,看看设置里有没有是否替换的选项,没有的话就是编译器的问题了。
C_linux记事 2013-05-17
  • 打赏
  • 举报
回复
你const了, 不过本质还是变量, C语言中数组长度规定不能用变量, 除非你用define来弄。

69,371

社区成员

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

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