NO.181if结构为假时为什么不是不执行?
本帖最后由 我爱橙 于 2022-4-28 12:38 编辑#include <stdio.h>
int main()
{
int x = 1,y = 2,z=3;
if(x>z)
y=x;
x=z;
z=y;
printf("z=%d\n", z);
return 0;
}
if为假,不应该输出原结果z=3吗? 欲速则不达,跟着教程慢慢来
教程中没有说多条语句要加大括号?
if(x>z)
{
y=x;
x=z;
z=y;
} 再一次提醒,这是C语言,不是python
人造人 发表于 2022-2-23 15:29
if(x>z)
{
y=x;
还是没懂哎,if为假,大括号里不也不执行吗? 我爱橙 发表于 2022-2-23 15:42
还是没懂哎,if为假,大括号里不也不执行吗?
输出3,有什么问题?
$ cat main.c
#include <stdio.h>
int main()
{
int x = 1,y = 2,z=3;
if(x>z)
{
y=x;
x=z;
z=y;
}
printf("z=%d\n", z);
return 0;
}
$ gcc-debug -o main main.c
$ ./main
z=3
$ 我爱橙 发表于 2022-2-23 15:42
还是没懂哎,if为假,大括号里不也不执行吗?
是呀,条件为假if语句的代码当然不会执行
你是对这个答案有问题,还是对这个if执行逻辑有问题? 人造人 发表于 2022-2-23 15:44
输出3,有什么问题?
运行结果是2{:9_222:}这就是问题所在啊,我也觉得应该是3才对,可是程序运行结果是2 大马强 发表于 2022-2-23 16:02
是呀,条件为假if语句的代码当然不会执行
你是对这个答案有问题,还是对这个if执行逻辑有问题?
答案,我觉得if为假不执行应该是原值3,但程序结果是2 #include <stdio.h>
int main()
{
int x = 1,y = 2,z=3;
if(x>z)
y=x; // 不用{} ,if默认 只将下一句当作 其用作语句。当前为假不执行这句
x=z; // 这句会执行
z=y; // 这句会执行
printf("z=%d\n", z);
return 0;
}
#include <stdio.h>
int main()
{
int x = 1,y = 2,z=3;
if(x>z) // 用了 {} 这三句就是if语句的作用域,if为假这三句都不执行
{
y=x;
x=z;
z=y;
}
printf("z=%d\n", z);
return 0;
} 我爱橙 发表于 2022-2-23 16:03
运行结果是2这就是问题所在啊,我也觉得应该是3才对,可是程序运行结果是2
没修改前,也就是本贴的代码,if为假,确实不执行,所以第一行的y=x,确实不执行,可是if只管到这里啊,后面的x=z,z=y,if不管的,是会执行的,所以结果就是z=y=2啊, 前面也有人按照你的思路帮你改过来了,你想结果是3 的话,就得加大括号,让if把下面的三个式子都管了才行,这样if为假,自然会输出3,题主的问题不是3和2 的问题,而是你好像不怎么明白if的用法 #include <stdio.h>
int main()
{
int x = 1, y = 2, z = 3;
/* if (x > z)
y = x;//不加{},if语句的作用范围只是一条语句
x = z;
z = y;*/
if (x > z)//正确写法,要使if、else、for、while等语句的作用范围是多条语句时,一定要加{},不管几条语句加{}是个好习惯
{
y = x;
x = z;
z = y;
}
printf("z=%d\n", z);
return 0;
} C语言中是用括号来判断是否为下一级语句,如果没有括号,那么只有逻辑判断之后的一个语句为下级语句,其他的都是要执行的语句,没有层级关系。
python是根据你缩进的来判断层级关系,别搞混了。
我就是个小白,都是兴趣,上述都是我自己的理解,有错误希望多多指出 湫的小草原 发表于 2022-2-23 17:26
没修改前,也就是本贴的代码,if为假,确实不执行,所以第一行的y=x,确实不执行,可是if只管到这里啊, ...
好的好的,之前是有人指出来过没加括号,但我就还是没懂加和没加的区别,感谢你这个细节提醒了 大马强 发表于 2022-2-23 16:35
好一目了然了,超级感谢,就是我今天看帖子之前弹到下面返回来才看到你的,不然就直接设置你的为最佳了{:9_229:} 我爱橙 发表于 2022-2-24 12:46
好一目了然了,超级感谢,就是我今天看帖子之前弹到下面返回来才看到你的,不然就直接设置你的为最佳了{: ...
没事{:10_297:}
页:
[1]