int func(int n, int* r)
{
printf("n=%d *r=%d\n",n,*r);//加了个打印的东西 return n && (*r += n) && func(n-1, r);
}int main()
{int r = 0;func(100, &r);return 0;
}
&&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式,例如,对于if(str != null && !str.equals(“”))表达式,当str为null时,后面的表达式不会执行,所以不会出现NullPointerException如果将&&改为&,则会抛出NullPointerException异常。If(x==33 & ++y>0) y会增长,If(x==33 && ++y>0)不会增长
n=100 *r=0
n=99 *r=100
n=98 *r=199
n=97 *r=297
n=96 *r=394
n=95 *r=490
n=94 *r=585
n=93 *r=679
n=92 *r=772
n=91 *r=864
n=90 *r=955
n=89 *r=1045
n=88 *r=1134
n=87 *r=1222
n=86 *r=1309
n=85 *r=1395
n=84 *r=1480
n=83 *r=1564
n=82 *r=1647
n=81 *r=1729
n=80 *r=1810
n=79 *r=1890
n=78 *r=1969
n=77 *r=2047
n=76 *r=2124
n=75 *r=2200
n=74 *r=2275
n=73 *r=2349
n=72 *r=2422
n=71 *r=2494
n=70 *r=2565
n=69 *r=2635
n=68 *r=2704
n=67 *r=2772
n=66 *r=2839
n=65 *r=2905
n=64 *r=2970
n=63 *r=3034
n=62 *r=3097
n=61 *r=3159
n=60 *r=3220
n=59 *r=3280
n=58 *r=3339
n=57 *r=3397
n=56 *r=3454
n=55 *r=3510
n=54 *r=3565
n=53 *r=3619
n=52 *r=3672
n=51 *r=3724
n=50 *r=3775
n=49 *r=3825
n=48 *r=3874
n=47 *r=3922
n=46 *r=3969
n=45 *r=4015
n=44 *r=4060
n=43 *r=4104
n=42 *r=4147
n=41 *r=4189
n=40 *r=4230
n=39 *r=4270
n=38 *r=4309
n=37 *r=4347
n=36 *r=4384
n=35 *r=4420
n=34 *r=4455
n=33 *r=4489
n=32 *r=4522
n=31 *r=4554
n=30 *r=4585
n=29 *r=4615
n=28 *r=4644
n=27 *r=4672
n=26 *r=4699
n=25 *r=4725
n=24 *r=4750
n=23 *r=4774
n=22 *r=4797
n=21 *r=4819
n=20 *r=4840
n=19 *r=4860
n=18 *r=4879
n=17 *r=4897
n=16 *r=4914
n=15 *r=4930
n=14 *r=4945
n=13 *r=4959
n=12 *r=4972
n=11 *r=4984
n=10 *r=4995
n=9 *r=5005
n=8 *r=5014
n=7 *r=5022
n=6 *r=5029
n=5 *r=5035
n=4 *r=5040
n=3 *r=5044
n=2 *r=5047
n=1 *r=5049
n=0 *r=5050
Press any key to continue