编译器信息还不知道怎么看。

  • 在我电脑和手机的GCC环境中

!: 代表值得取反,对于整形变量,只要不为0,使用 ! 取反都是0,0取反就是1。就像 bool 只有真假一样。

~: 代表位的取反,对于整形变量,对每一个二进制位进行取反,0变1,1变0。

实验

在VS2017平台下运行。

#include "stdio.h"
int main()
{char u8_a=1;short short_a = 1;int int_a = 1;printf("-------------------------正数---------------------------");printf("\n\t原值:\n");printf("\tu8_a:%x\n", u8_a);printf("\tshort_a:%x\n", short_a);printf("\tint_a:%x\n", int_a);printf("\n\t~  (位取反):\n");printf("\tu8_a:%x\n", ~u8_a);printf("\tshort_a:%x\n", ~short_a);printf("\tint_a:%x\n", ~int_a);printf("\n\t!  (值取反):\n");printf("\tu8_a:%x\n", !u8_a);printf("\tshort_a:%x\n", !short_a);printf("\tint_a:%x\n", !int_a);u8_a = -1;short_a = -1;int_a = -1;printf("-------------------------负数---------------------------");printf("\n\t原值:\n");printf("\tu8_a:%x\n", u8_a);printf("\tshort_a:%x\n", short_a);printf("\tint_a:%x\n", int_a);printf("\n\t~  (位取反):\n");printf("\tu8_a:%x\n", ~u8_a);printf("\tshort_a:%x\n", ~short_a);printf("\tint_a:%x\n", ~int_a);printf("\n\t!  (值取反):\n");printf("\tu8_a:%x\n", !u8_a);printf("\tshort_a:%x\n", !short_a);printf("\tint_a:%x\n", !int_a);getchar();return 0;
}

结果

附加: 至于有些变量为什么多了很多字节,补位。

c语言中!与~的区别相关推荐

  1. Go语言中*和的区别

    Go语言中*和&的区别 总结 示例 老是分不清*和&的区别,今天特意总结了一下. 1. 总结 &是取地址符. *可以表示一个变量是指针类型,也可以表示指针类型变量所指向的存储单 ...

  2. c语言中.和-区别,c语言中-和.的区别

    对于c语言中"->"和"."的区别总结如下: 1.A.B则A为对象或者结构体: 2.A->B则A为指针,->是成员提取,A->B是提取A ...

  3. 从go语言中找和*区别

    *和&的区别 : & 是取地址符号 , 即取得某个变量的地址 , 如 ; &a *是指针运算符 , 可以表示一个变量是指针类型 , 也可以表示一个指针变量所指向的存储单元 , ...

  4. c语言exit和return区别,在fork和vfork中使用

    转自c语言exit和return区别,在fork和vfork中使用 exit函数在头文件stdlib.h中. 简述: exit(0):正常运行程序并退出程序: exit(1):非正常运行导致退出程序: ...

  5. C语言中的位运算符主要有哪些?逻辑右移与算术右移的区别?

    逻辑右移与算术右移的区别? 逻辑右移就是不考虑符号位,右移一位,左边补零即可. 算术右移需要考虑符号位,右移一位,若符号位为1,就在左边补1,:否则,就补0. 所以算术右移也可以进行有符号位的除法,右 ...

  6. c语言中指针中 - 和 。的区别?

    c语言中指针中 -> 和 .的区别? 例子1:比如有如下结构 typedef strut node{ int data;   strut node * next; } ListNode; Lis ...

  7. C语言中()和【】的区别?

    C语言中()和[]的区别? 1.注意()是初始化,[]是定义多个对象. 2.int* p = new int (100) 是创建一个int型的内存,并赋值为100; int *p = new int[ ...

  8. c语言中全局变量内存,C语言——全局变量和局部变量在内存中的区别——及编译后的内存分区【栈-堆-全局存储区-文字常量区-程序代码区】...

    目录: 一:全局变量 二:局部变量 三:C语言经过编译之后将内存分为以下几个区域 (1)栈(stack) (2)堆(heap) (3)全局(静态)存储区 (4)文字常量区 (5)程序代码区 四:区别 ...

  9. C语言中 *.c和*.h文件的区别!

    C语言中 *.c和*.h文件的区别!      这是HR面试我的一道题,没技术上含量,不过细想起来,还是C语言的最基本的知识!俗话说,目标决定动力,细节决定成败! C文件就是C语言系列的源文件,而H文 ...

  10. GUN ARM汇编中标号的引用在汇编和C语言中区别(monitor_flash_len = _bss_start - _armboot_start;)

    u-boot/cpu/xx/start.S中: _TEXT_BASE:  .word TEXT_BASE /*uboot映像在SDRAM中的重定位地址,我设置为0xa170 0000 */ .glob ...

最新文章

  1. SAP SD 基础知识之定价中的条件技术(Condition Technique in Pricing)
  2. 2015年获得大数据顶尖职位必备的9项技能
  3. 苹果 App Store 申请和管理相关知识
  4. 使用 LLVM 实现一个简单编译器
  5. arraylist如何检测某一元素是否为空_java学习笔记:【ArrayList集合】
  6. 比特币中的密码学知识汇总
  7. ipv6+ssh+java_IPv6的本地联网地址计算方法详解
  8. c++ opencv实现区域填充_Python+OpenCV基础教程2:平滑图像
  9. 使用CompletionService结合ExecutorService批处理任务
  10. nginx504超时解决方法
  11. 金九银十,果然如此,这个九月有点折腾
  12. 利用win自带功能让处于同一局域网的两个电脑之间互传文件(速度和本地磁盘间互传相同)
  13. SQL注入常用WAF绕过姿势
  14. 13.ActiveMQ 优缺点
  15. php 百度地图导航代码,百度地图API自动定位和3种导航
  16. NOIP模拟赛20191024 T1 嘟嘟噜【约瑟夫问题的mlogn解法】
  17. Jupyter 安装与应用
  18. 程序员用技术在「抖音」上「撩妹」
  19. 2021-05-11 MongoDB面试题 MongoDB是什么
  20. 图卷积神经网络4-空域卷积:空域卷积局限性分析和过平滑解决方案

热门文章

  1. 公钥基础设施 PKI 技术与应用发展
  2. 使用原生js写一个简单的注册登录页面
  3. 解决MacBook Pro Touch ID失灵不起作用的方法
  4. 环境和社会风险分类c类_企业经营风险的定义、种类以及基本分类
  5. Linux下Bluetooth编程
  6. 《指数基金投资指南》银行螺丝钉 ---读书
  7. 全球 26 个主流视频网站高清视频下载全搞定,包括 P 站!
  8. Skyworks Aeronautics宣布获得GEM的1亿美元投资承诺,计划于未来数月内上市
  9. 【百练】护林员盖房子
  10. 哔哩哔哩20校招算法笔试题(2019.8.20)第二道编程题 AC