大一新生对while中得判断表达式的一点点问题
#include<stdio.h>
void main()
{
int k=0;
while(k++<=2);
printf("last=%d\n",k);
}
我用VC++得到的结果是LAST=4.
我想请教的是,while的判断表达式(k++<=2);
K先和2比较,比较完自增.
然后在判断?
为什么结果是输出的是4呢?
求详细的结果,拜托了.!
[解决办法]
不要使用
while (条件)
更不要使用
while (组合条件)
要使用
while (1) {
if (条件1) break;
//...
if (条件2) continue;
//...
if (条件3) return;
//...
}
因为前两种写法在语言表达意思的层面上有二义性,只有第三种才忠实反映了程序流的实际情况。
典型如:
下面两段的语义都是当文件未结束时读字符
whlie (!feof(f)) {
a=fgetc(f);
//...
b=fgetc(f);//可能此时已经feof了!
//...
}
而这样写就没有问题:
whlie (1) {
a=fgetc(f);
if (feof(f)) break;
//...
b=fgetc(f);
if (feof(f)) break;
//...
}
类似的例子还可以举很多。
[解决办法]
你可以再声明一个变量j,然后在把k的值传递给j,通过j的变化观察k。这种方法应该可以!
[解决办法]
k=0的时候 第一次进while循环变量k++ 为1 赋值给k变量 同时进while循环 打印 1
k=1的时候 第二次进while循环变量k++ 为2 赋值给k变量 同时进while循环 打印 2
k=2的时候 第三次进while循环变量k++ 为3 赋值给k变量 同时进while循环 打印 3
k=3的时候 第三次进while循环条件进行判断 3<=2不成立 所以也就不会在进 while循环体
到此整个while循环结束 到此该打印出那些数据 我想lz已经知道了
[解决办法]