public class Test { public static void main(String[] args) { int i=2;
for(f('A');f('B')&&i<2;f('C')){
f('D');
}
} public static boolean f(char c){
System.out.println(c);
return true;
}
}
请高手帮我解释一下
for(f('A');f('B')&&i<2;f('C')){
f('D');
}
} public static boolean f(char c){
System.out.println(c);
return true;
}
}
请高手帮我解释一下
首先i=2, 然后执行for()循环,碰到f('A'),调用 f()函数
输出A,然后返回一个ture, 也就是f('A')的值为1. 同理,f('B')也为1,然后f()函数打印B这时候for循环看起来是这样的for(1;1&&2<2;f('C')){}
根据符号优先级,2<2先运算,为假0. for(1;,1&&0;f('C'){}. 也就是中间循环条件为假,所以
f('C')和循环内部就根本不会走,程序结束。结论,这个程序只会输出 A和B, 是f('A')和f('B')输出的。
他执行了f('A')和f('B'),也就是打印出了A和B两个字母。
然后就结束了。可能是因为f('B')&&i<2;这个表达式为false了。
其实这就是一个普通的for循环。
初始化了一个f('A'),然后对表达式f('B')&&i<2;进行判断,这个表达式相当于i<100如果为真就执行作用域里的内容。
执行完作用域里的内容之后执行f('C')也就相当于i++
你可以做个测试。把表达式f('B')&&i<2改为f('B')&&i==2 也就是永远都是true,这样会一直执行下去。
控制台打印就内容应该是:
先打印一个A然后是B然后是D然后是C
接下来就是B,D,C无限循环下去了。
B
因为程序在执行过程中执行了f('A')为true;然后执行f('B')(true)和i<2(fasle),循环语句没有执行,所以只是输出了A和B的值
忘记说了 ,, 现在的代码只会打印出A和B 因为中间的表达式的值是false
public class Test {public static void main(String[] args) {int i=0;
for(f('A');f('B')&&i<2;f('C')){、
i++;
f('D');
}
} public static boolean f(char c){
System.out.println(c);
return true;
}
}
abdcbdcb;先执行f('A')输出A;
然后执行f('B')输出B;
然后D。然后C;
因为i++完为1继续执行。所以又出来BDC。然后i为2后面不执行了。只执行到f(‘B’)输出B;
所以结果ABDCBDCB;感谢三楼的大大。我也刚学。按您的思路出来的。
先打印一个A然后是B然后是D然后是C
接下来就是B,D,C无限循环下去了。
详解请参考我3楼的回复、
由于i = 2 , 故此可知该条件为假,
所以直接就调用f('D'),即打印的是D
输出:A B D C B D C B
考的就是for循环的执行顺序嘛
jquery 做你的拖动图片很简单
不知道你用什么做的
B 因为i<2条件不允许
接下来就是B,D,C无限循环下去了。
因为循环控制变量始终不会变,循环条件永远为真
i++;
f('D');
}
&是什么东东求解释
初始化f('A')->调用函数f(char c)->打印A->返回true
f('B') ->f('B')->打印A->返回true
i < 2 ->2<2->返回false
true && false ->循环结束
输出结果:
A
B
A
B
D
C
B
D
C 后三个字母(BDC)循环下去
因为&&个运算符的运算法则是只要左边为true就不会再计算右边,所以不管i<2的条件是true or false循环依旧进行,
for(f('A');f('B')&&i<2;f('C')){
f('D');
}
首先执行f('A'),输出:A
然后执行f('B')&&i<2,输出:B,i=2,所以为 false.
结束。
int print1(int i,int j)
{
printf(" 执行判断条件,i=%d,j=%d ",i,j);
return 1;
}void main( )
{
int i = 0, j = 10;
for(i=0;((print1(i,j)) && (i<j));
i++,j--,printf("执行for()中的第三个语句,i=%d,j=%d ",i,j))
{
if(j==10)
{
printf("%d,%d ",i,j);
j--;
}
j++;
printf("执行for循环体中的最后一句,i=%d,j=%d ",i,j);
}
printf(" %d,%d ",i,j);
}
B
D
C
B
D
C
B
电脑亲测答案,csdn果然是卧虎藏龙呀!
{
C
}B==true;第一次执行应该是ABCD,以后的循环都是执行BCD。
B==false;第一次执行AB后,就直接退出了。 for(f('A');f('B')&&false;f('D'))
{
f('C');
cin.get();
} cin.get(); for(f('A');f('B')&&true;f('D'))
{
f('C');
cin.get();
} cin.get();
i=0只有在第一次循环的时候,会加载它,在判断i<10,第二次的时候,就不再走i=0,会先i++,在判断i<10
所以,上面的结是AB
改成while循环,就一目了然
我是用VC,所以题目稍作改变,其中a是类的对象,则for循环改为如下while循环:
a.f('A');
while(a.f('B') && i<2)
{
++i;
a.f('D');
a.f('C');
}
B
D
C
B
D
C
B
很简单的一个for循环啊!
先是初始化打印A,然后判断条件打印B,i不小于2不执行任何东西退出
for(A;B;C){
D;
}
A: 初始化值
B:条件判断
D:执行体
C:改变值 1. do A
|
|--------------------->2. do B
| |
| ---------3. B == true ?--------
| | |
| | yes |no
| | |
| 4a. do D 4b. exit if B
| |
| 5. do C
| |
---------------
http://hi.csdn.net/space-804440-do-album-picid-502122-goto-down.html
http://hi.csdn.net/space-804440-do-album-picid-502122-goto-down.html
还有那么多说什么ABDCDSSDSDFS循环的
for(a;b;c)
{
d
}
第一步:先执行a,且a只被执行一次。
第二步:执行b,如果b是true则执行d,且进入第三步;如果b是false则终止程序。
第三步:执行c,返回第二步。
这道题主要还是考察for循环的执行方式~
结果:
A
B
D
C
B
D
C
B