开发者社区> 问答> 正文

C / C ++中的“!<number>”是什么意思

! c中的含义是什么。例如!-2还是!3?

cout << !-2;

Output: 0

cout << !3;

Output: 0

展开
收起
kun坤 2019-11-29 11:24:18 760 0
1 条回答
写回答
取消 提交回答
  • 5
    
    !是逻辑否定运算符。根据C标准(6.5.3.3一元算术运算符)
    
    5逻辑求反运算符的结果!如果其操作数的值比较不等于0,则为0;如果其操作数的值比较等于0,则为1。结果的类型为int。表达式!E等效于(0 == E)。
    
    并且来自C ++标准(8.3.1一元运算符)
    
    9逻辑否定运算符的操作数!在上下文中转换为bool(第7条);如果转换后的操作数为false,则其值为true;否则为false。结果的类型是布尔。
    
    因此,例如,此表达式
    
    cout << !-2;
    根据C引号等效于
    
    cout << ( 0 == -2 );
    在C语言中,运算符的结果具有类型,int而在C ++语言中,运算符的结果具有类型bool。
    
    请注意,在C ++中,您可以使用替代令牌not。例如,上面的语句可以像
    
    cout << not -2;
    在C语言中,您可以包含标题<iso646.h>,并将宏not用作操作员的替代记录!。
    
    还有一个窍门。例如,如果您希望从C函数返回一个整数表达式,以将其完全转换为1或0,则可以编写例如
    
    return !!expression;
    也就是说,如果expression不等于,0则第一次应用运算符!会将表达式转换为0,第二次应用运算符!会将结果表达式转换为1。
    
    就像写一样
    
    return expression == 0 ? 0 : 1;
    但更紧凑。
    
    2019-11-29 11:24:30
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载