C语言 !! 的含义

偶发现c代码中出现了 !!(condition) 的写法,逻辑上来说 !! 对原来的含义没有任何变换,那这种写法用意何在?

个人猜想:这种写法主要是将,condition 为

true 的表达式结果置为1。因为condition结果 可为正、负数; 

false的表达式结果置为0(没有变化)。

这个中写法常见于 strcmp() 、memcmp() 类函数。 如:

 

#include <stdio.h> 
#include<string.h>
int main()
{
   char *p1 = "1";
   char *p2 = "9";
   char *p3 = "5";
   printf("p1-p2 :%d, %d\n", strcmp(p1,p2), !!strcmp(p1,p2));
   printf("p2-p3 :%d, %d\n", strcmp(p2,p3), !!strcmp(p2,p3));

   printf("p3-p3 :%d, %d\n", strcmp(p3,p3), !!strcmp(p3,p3));    // 无变化

   return 0;
}

运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值