被这个赋值=,判断==坑了好多次,下次还会继续被坑。。。。
举个例子: k=0 和 k == 0
k=0 是把 0 赋值给 k 。
k == 0 判断 k 的值是否为 0。
1.
while( k=0 )是把 k 赋值为 0,同时表达式的结果也是 0,所以while下的循环体不会执行。
a = b 是将b的值传给 a, while(a=b)则表示
b的值传给 a,然后以 a 是否为 0 作为循环条件进行判断。
while( k==0 ),当k 的值为 0 ,则表达式的结果为真,则执行循环。
a==b 是将a 与b的值进行比较,若相等则返回 非0,while(a==b)表示a 是否等于b 作为循环条件进行判断。
2.
for( k=0; k=1; k++)先 k=0,后判断是否满足条件,本例中 k = 1是一个赋值表达式, k = 1的值永远为 1 ,即逻辑真,所以会陷入一个死循环。
for( k=0; k==1; k++) 一样先 初始化 k=0,由于 k =0, 不满足k ==1 这个判断条件,因此该循环不会执行一次。。