c99标准里面不允许这样for(int i = 0; i < n; ++i)???

小小攻城师 2009-12-11 04:08:39
如题 请知道的回答一下
我在oj上提交的时候他说才c99不允许在for()里面定义int
我把它放到外面就没有问题
求问标准到底是能还是不能?
我一直以为能 从我学习c开始就以为能
...全文
9126 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
swordsman 2012-07-13
  • 打赏
  • 举报
回复
哎,有用。
dotmanhan 2011-08-10
  • 打赏
  • 举报
回复
很有用
durant 2009-12-12
  • 打赏
  • 举报
回复
[Quote=引用 25 楼 huiguixian 的回复:]
引用 22 楼 wangjun403 的回复:
GCC下可以在C程序里这样定义
但不可以在C++程序里这样定义!
LZ是不是在C++程序里这样定义了?

引用 24 楼 gingzai777 的回复:
这个好像原先是C++的语法(不知道是否叫语法,反正C++支持的)


后来C99加上去的。

两个刚好相反,我该信哪一个?
[/Quote]

反正我在GCC下编译的时候(没有加任何选项),是我说的那样,其他的我就不知道了
chaoliu1024 2009-12-11
  • 打赏
  • 举报
回复
C89不支持的,C89在定义变量时要在一切动作之前,就是我们常常在函数最开始处。如:
int main(void)
{
int i,j;
}

C99可以在任何定义。包括for循环内
小小攻城师 2009-12-11
  • 打赏
  • 举报
回复 1
[Quote=引用 21 楼 do_fork 的回复:]
引用 18 楼 borefo 的回复:
刚好,今天我在Linux编译了这样的代码,也被提示说c99不支持这样的写法,奇怪~~~


看反了吧,提示的是这个
error: ‘for’ loop initial declarations are only allowed in C99 mode
note: use option -std=c99 or -std=gnu99 to compile your code

它说只有C99允许,提示用 -std=xxx 编译你的代码
[/Quote]
谢谢fork 如果是这样的话那就没疑问了 c99是支持的了
这样说的话23楼也是正确的咯
小小攻城师 2009-12-11
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 wangjun403 的回复:]
GCC下可以在C程序里这样定义
但不可以在C++程序里这样定义!
LZ是不是在C++程序里这样定义了?
[/Quote]
[Quote=引用 24 楼 gingzai777 的回复:]
这个好像原先是C++的语法(不知道是否叫语法,反正C++支持的)

后来C99加上去的。
[/Quote]
两个刚好相反,我该信哪一个?
Zijian_Zhang 2009-12-11
  • 打赏
  • 举报
回复
这个好像原先是C++的语法(不知道是否叫语法,反正C++支持的)

后来C99加上去的。
2009-12-11
  • 打赏
  • 举报
回复
C99 和 C++ 都允许这种语法,但是大多数的 OJ 是不会使用 C99 标准的,gcc 编译的时候也要加 -std=c99 选项才会以 C99 编译。
durant 2009-12-11
  • 打赏
  • 举报
回复
GCC下可以在C程序里这样定义
但不可以在C++程序里这样定义!
LZ是不是在C++程序里这样定义了?
do_fork 2009-12-11
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 borefo 的回复:]
刚好,今天我在Linux编译了这样的代码,也被提示说c99不支持这样的写法,奇怪~~~
[/Quote]

看反了吧,提示的是这个
error: ‘for’ loop initial declarations are only allowed in C99 mode
note: use option -std=c99 or -std=gnu99 to compile your code

它说只有C99允许,提示用 -std=xxx 编译你的代码
alexhilton 2009-12-11
  • 打赏
  • 举报
回复
C99是支持这样做的!
C99主要增加的几个特性:
C++风格的注释;在for中声明变量;内联函数inline
小小攻城师 2009-12-11
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 borefo 的回复:]
刚好,今天我在Linux编译了这样的代码,也被提示说c99不支持这样的写法,奇怪~~~
[/Quote]
真的嘛?
楼下高手改上了吧
borefo 2009-12-11
  • 打赏
  • 举报
回复
刚好,今天我在Linux编译了这样的代码,也被提示说c99不支持这样的写法,奇怪~~~
小小攻城师 2009-12-11
  • 打赏
  • 举报
回复
求楼下给确定答案
是或者不是c99允许的方式?
DINGXIAOYU777 2009-12-11
  • 打赏
  • 举报
回复
我都是外面定义的没这样做过
lzh3ng 2009-12-11
  • 打赏
  • 举报
回复
以前的需要在for前面定义。
小小攻城师 2009-12-11
  • 打赏
  • 举报
回复
可是oj提交的时候为什么有问题啊?
难道天津大学的oj不是用的c99的标准?
sduxiaoxiang 2009-12-11
  • 打赏
  • 举报
回复
这个可以啊
jackyjkchen 2009-12-11
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 do_fork 的回复:]
引用 10 楼 jackyjkchen 的回复:
VC不支持C99,但是支持这个


VC2008不支持这个,莫非2010支持了?
[/Quote]
你难道不知道,对我来说,C和C++不分家么……既然C99的许多东西C++里有,又何必增加C编译器的复杂度呢?
do_fork 2009-12-11
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 jackyjkchen 的回复:]
VC不支持C99,但是支持这个
[/Quote]

VC2008不支持这个,莫非2010支持了?
加载更多回复(10)

69,393

社区成员

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

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