愤怒的小鸡
发表于 2013-8-24 11:49:38
顶一下,不错不错....
play_C
发表于 2013-8-24 12:19:00
挺不错额的
play_C
发表于 2013-8-24 12:20:10
真的挺不错的。。。
a13106781
发表于 2013-8-24 23:16:31
楼主辛苦了。
网络学习
发表于 2013-8-25 00:14:01
很好谢谢我会用心的
snailqiu
发表于 2013-9-1 19:51:24
归纳的挺详细的,不错
懒家大少
发表于 2013-9-2 10:03:30
根据您的陷阱3中提到的
如果是for循环,跟if一样,事与愿违,循环做无用功,本想循环的printf语句只执行一次。for(int a=1;a<10;a++);printf("%d",a);程序只输出一次a值。
我特地试了一下#include <stdio.h>
void main(){
for(int a = 1; a < 10; a++);
printf("%d\n", a);
}输出结果是10
我想问的是,int a = 1;
定义变量是在for内,为什么能被for外识别?
这是C的不同吗?
因为我之前学JAVA的,求指路
懒家大少
发表于 2013-9-2 10:21:30
楼主,
关于我说的陷阱3
如果是for循环,跟if一样,事与愿违,循环做无用功,本想循环的printf语句只执行一次。for(int a=1;a<10;a++);printf("%d",a);程序只输出一次a值。
我上百度问人了
别人说的答案是要看标准,标准不一样,情况不一样,以下是百度收集的答案
http://zhidao.baidu.com/question/587907634.html?sort=6#answer-1472054668
我的代码片段#include <stdio.h>
void main(){
for(int a = 1; a < 10; a++);
printf("%d\n", a);
}NO.1
一种语言的编译器只要能支持90%这种语言就不错了,虽然在正常的for(int i)这种定义,只在for内有效,但是,在不同的编译器中是不一样的,
如果你用的是VC6.0就可以通过,如果是VS2008以上版本的编译器就会报错,
这是VC6.0编译器进行优化了的原因,使得a的作用域大于for循环域
NO.2
这段代码根据C89标准是不可以编译的
根据C99或者C++标准是可以编译的
可以编译的情况下 变量a数据main的局部变量
而不是for内的局部变量
对于for语句,写在for循环体内的才是for的局部变量
for(;;)
{
int loc;
}
这里的loc才是局部变量
这个loc在for之外是不可以被引用的
且行且止
发表于 2013-9-2 11:01:36
好帖,我这些错误基本都犯过
宝宝吃肉
发表于 2013-9-3 09:10:03
顶起来
h2323734288
发表于 2013-9-8 07:26:07
支持支持加油谢谢
吴凌
发表于 2013-9-16 14:40:43
很好,很不错,学习了
Tims
发表于 2013-9-25 16:09:42
:handshake很实用啊,确实有些碰到过
czd123
发表于 2013-9-25 16:24:55
好东西收下了谢谢
czd123
发表于 2013-9-25 16:26:45
好东西收下了谢谢
G0398
发表于 2013-10-1 22:22:47
激动人心,无法言表!
星之陨
发表于 2013-10-1 23:24:48
懒家大少 发表于 2013-9-2 10:21 static/image/common/back.gif
楼主,
关于我说的陷阱3
如果是for循环,跟if一样,事与愿违,循环做无用功,本想循环的printf语句只执行 ...
建议看看《C语言参考手册》这一本书噶,里面对C99和C89有详细的说明。。还有规范很重要,C语言里重来没有void main()这样的东西噶~:sweat:
960023815
发表于 2013-10-2 00:27:32
细节决定成败!不错
chq220
发表于 2013-10-2 09:51:27
确实是容易犯的错误,以后要更小心
慢半拍
发表于 2013-10-6 15:15:17
好帖,{:5_109:}{:5_109:}