if()括号里面出现的不是关系判断==,而是=,会发生什么?
该视频截图正在向我们展示if()括号里面出现的不是关系判断==,而是=,会发生什么。但是我不理解为什么if(age = 0)会执行{}里面的内容,输出了604800.000000,而if(age = 0)不会执行{}里面的内容。 本帖最后由 jackz007 于 2022-7-27 17:49 编辑先考察一下这个代码:
#include <stdio.h>
int main(void)
{
int a , b , age ;
a = (age = 0) ;
printf("a = %d , age = %d\n" , a , age) ;
b = (age = 60) ;
printf("b = %d , age = %d\n" , b , age) ;
}
编译、运行实况:
D:\\C>g++ -o x x.c
D:\\C>x
a = 0 , age = 0
b = 60 , age = 60
D:\\C>
下面探讨一下楼主的问题
if(age = 60) // 表达式 age = 60 的值是 60,对应的逻辑值当然是 true 了
if(age = 0) // 表达式 age = 0 的值是 0,对应的逻辑值当然是 false 了 jackz007 发表于 2022-7-27 17:42
先考察一下这个代码:
编译、运行实况:
我可以这么理解吗?if()括号里面看的是逻辑值,如果> <=!= 等,成立就是1,不成立就是0,而这里对于age算赋值,括号里面是60,不是0,所以运行if()后面的语句,如果括号里面不成立,就是0,age=0也是0,所以不运行。 jackz007 发表于 2022-7-27 17:42
先考察一下这个代码:
编译、运行实况:
我还有一点糊涂 追光THO 发表于 2022-7-29 15:48
我可以这么理解吗?if()括号里面看的是逻辑值,如果> <=!= 等,成立就是1,不成立就是0,而这里对 ...
== 追光THO 发表于 2022-7-29 15:48
我可以这么理解吗?if()括号里面看的是逻辑值,如果> <=!= 等,成立就是1,不成立就是0,而这里对 ...
这个理解是对的,任何一个整数都有对应的逻辑值,0 对应于 false,非 0 对应于 true。
页:
[1]