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

C语言glib代码中return !!myVar及双感叹号运算符的含义是什么?

C语言中!!操作符的作用解释

本质原理

!!并不是C语言内置的特殊操作符,只是两次逻辑非操作符!的连续使用,作用是将任意数值标准化为布尔型的0/1取值:

  • 第一个!:对输入值取逻辑非,所有非0的输入都会被转换为0,输入为0时会被转换为1
  • 第二个!:对第一次取反的结果再取反,最终效果就是:任意非0原值输出为1,原值为0输出为0

代码逻辑拆解

你提到的代码片段如下:

gboolean function()
{
  guint myVar = 0;
  myVar = (!!globalVar1 + !!globalVar2 + !!globalVar3);
  return !!myVar;
}
  • 对三个全局变量分别使用!!处理后,每个变量都会被转为0或1,求和后myVar的值就是三个全局变量里非0变量的总个数,取值范围是0~3
  • return !!myVar的作用是:只要三个全局变量里至少有一个非0(即myVar >=1),就返回1;只有三个变量全为0时才返回0。这种写法保证返回值严格符合glib的gboolean类型定义:TRUE对应1、FALSE对应0,避免直接返回myVar时出现2、3这类非标准布尔值的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 13:15:04