C问题

zhoujiaj 2008-07-28 09:02:38
为什么不可以在循环体中声明变量。比如for(......){int sum=0;sum=sum+...};编译通不过,说sum有问题。
...全文
145 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
ack2me 2008-07-30
  • 打赏
  • 举报
回复
c++可以这样,c语法不行,很简单。
hznat 2008-07-30
  • 打赏
  • 举报
回复
是和C标准有关,
其实这个很普遍

例子:
有些语言要求声明必须在实现前面,而有些则在前在后都没有关系

这些东西和定义有关。

在实际应用中,都要根据实际的环境来做一些调整,
一直被认为有很好移植性的,LINUX,UNIX各种版本之间的一些移植 有些也是要做调整的。
ForestDB 2008-07-29
  • 打赏
  • 举报
回复
C89是不允许的,后续的C标准是允许的。
wangdeqie 2008-07-29
  • 打赏
  • 举报
回复
[code=C/C++
//可以的,但sum变量只能在for()里面用,不能用在别的地方
//比如这么写
#include <stdio.h>
int main()
{
int a[3]={1,2,3};
for(int i=0;i<3;i++)
{
int sum=0;
sum=sum+i;
}
return 0;
}
[/code]
weiyijiji 2008-07-29
  • 打赏
  • 举报
回复
c99可以,标准C不行。可以参考下C标准文献。thinking in c++也曾提到过
Grant119 2008-07-29
  • 打赏
  • 举报
回复
编译器的问题,按照c89是可以的。
是不是编译器太老了?
realdragon2 2008-07-28
  • 打赏
  • 举报
回复
这样的话,可能就跟编译器的设计有关了.
楼上的,输出1的原因是 在每次for循环时,都将sum初始化为0了,然后通过自增运算后,值变为1.
机智的呆呆 2008-07-28
  • 打赏
  • 举报
回复
vs2005的c编译竟然通过了 输出111111111?
#include <stdio.h>

int main()
{
int i;

for ( i=0;i<10;i++)
{
int sum=0;
sum++;
printf("%d",sum);
}

system("pause");
}
lockhall 2008-07-28
  • 打赏
  • 举报
回复
这个偶没听过啊;

[Quote=引用 2 楼 fetag 的回复:]
因为C语言里面要求,所有的变量都在函数开头统一定义,不支持像C++那样,随时用随时定义...
[/Quote]
9527他大爷 2008-07-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 fetag 的回复:]
因为C语言里面要求,所有的变量都在函数开头统一定义,不支持像C++那样,随时用随时定义...
[/Quote]
独孤过儿 2008-07-28
  • 打赏
  • 举报
回复
因为C语言里面要求,所有的变量都在函数开头统一定义,不支持像C++那样,随时用随时定义...
chenhj_wo 2008-07-28
  • 打赏
  • 举报
回复
标准C在语法上是不允许的

69,373

社区成员

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

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