C语言if语句布尔运算逻辑解析:为何条件为真输出GOD?
拆解C语言if条件的布尔运算逻辑
我们一步步拆解if(!(!a)==!0)这个条件的运算过程,结合C语言逻辑非!的规则:C语言中,逻辑非!对非0值运算结果为0,对0运算结果为1。
已知程序中int a=10,按运算优先级逐步计算:
- 第一步计算
!a:a的值是10(非0),所以!a = 0 - 第二步计算
!(!a):对第一步的结果0取逻辑非,得到!0 = 1 - 第三步计算
!0:直接得到结果1 - 最后比较
!(!a) == !0,也就是1 == 1,这个比较结果为真(非0)
因此if条件判定为真,执行printf("GOD"),这就是程序输出GOD的原因。
内容的提问来源于stack exchange,提问作者KHAN SAHAB
相关产品推荐
相关产品推荐

