当 for来代替 do_while出现的有关问题
当 for来代替 do_while出现的问题
#include<stdio.h>
int main(void)
{
int secret_code = 13;
int code_entered;
for(printf("To enter the triskaidekaphobia therapy club,\n"),printf("Please enter the secret code number:");scanf("%d",&code_entered),code_entered != secret_code;)
{
printf("To enter the triskaidekaphobia therapy club,\n");
printf("Please enter the secret code number:");
}
printf("Congratulations! You are cured!\n");
return 0;
}
http://see.xidian.edu.cn/cpp/html/45.html 这个是这样解释 for() 的。
也就是,scanf()在获取正确的数据时的返回值为 1 ,即这个表达式为真。
先忽略掉他的条件判断 code_entered != secret_code这个语句中,当 code_entered != secret_code 时,返回值为 1,所以会循环。
当 code_entered == secret_code时,与 原条件不符合,所以返回值为 0, 0为假,所以直接退出 for() 语句。
那我可以理解,循环中的判断条件关键就是它的返回值?
用这个东西看的 返回值。有没有什么问题。
#include<stdio.h>
int main(void)
{
int i = 1;
int j = 2;
int k;
k = (i != j);
printf("%d\n",k);
k = (i == j);
printf("%d\n",k);
return 0;
}
------解决方案--------------------
判断条件的关键就是它是否非0,我就是这么理解的。。。
------解决方案--------------------
这里涉及这几个表达式:
1)逗号表达式,
2)函数调用表达式,
3)和循环的条件表达式
------解决方案--------------------
#include<stdio.h>
int main(void)
{
int secret_code = 13;
int code_entered;
for(printf("To enter the triskaidekaphobia therapy club,\n"),printf("Please enter the secret code number:");scanf("%d",&code_entered),code_entered != secret_code;)
{
printf("To enter the triskaidekaphobia therapy club,\n");
printf("Please enter the secret code number:");
}
printf("Congratulations! You are cured!\n");
return 0;
}
http://see.xidian.edu.cn/cpp/html/45.html 这个是这样解释 for() 的。
也就是,scanf()在获取正确的数据时的返回值为 1 ,即这个表达式为真。
先忽略掉他的条件判断 code_entered != secret_code这个语句中,当 code_entered != secret_code 时,返回值为 1,所以会循环。
当 code_entered == secret_code时,与 原条件不符合,所以返回值为 0, 0为假,所以直接退出 for() 语句。
那我可以理解,循环中的判断条件关键就是它的返回值?
用这个东西看的 返回值。有没有什么问题。
#include<stdio.h>
int main(void)
{
int i = 1;
int j = 2;
int k;
k = (i != j);
printf("%d\n",k);
k = (i == j);
printf("%d\n",k);
return 0;
}
------解决方案--------------------
判断条件的关键就是它是否非0,我就是这么理解的。。。
------解决方案--------------------
这里涉及这几个表达式:
1)逗号表达式,
2)函数调用表达式,
3)和循环的条件表达式
------解决方案--------------------
for (A;B;C) D;
//等价于
{
A;
while (1) {
if (!(B)) break;
D;
C;
}
}