You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言中逻辑非运算符!的工作原理是什么?

C语言逻辑非运算符!的工作机制解释

核心规则(C标准明确规定)

逻辑非运算符!的结果只有两个可能值:0 或者 1,和位翻转完全没关系:

  • 当操作数是非零值时,!的结果为0
  • 当操作数是0时,!的结果为1

对应你的代码示例分析

  1. 第一个代码中:
    !(-76)里的-76是非零值,所以结果为0,if(0)属于假分支,不会执行printf;同理!(2)结果也是0,第二个if同样不执行,所以程序没有任何输出。

  2. 第二个测试代码:
    !4因为4是非零值,结果直接是0,所以x的值是0,printf("%d", x)自然输出0。

关于"位翻转"的误区

如果是翻转所有位的话,4的二进制(以32位int为例)是00000000 00000000 00000000 00000100,翻转后会变成11111111 11111111 11111111 11111011,对应补码的-5,但实际输出是0,显然这种猜测不成立。编译器是直接按照C标准的规则来处理!运算,不需要做位翻转操作。

内容的提问来源于stack exchange,提问作者coco

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 17:55:58