博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C99语法之新增类型_Bool
阅读量:5245 次
发布时间:2019-06-14

本文共 3285 字,大约阅读时间需要 10 分钟。

  在C99语法中新增加了_Bool 的布尔类型语法,例子如下:

1 #include
2 #include
3 4 int main(int argc, char **argv) 5 { 6 _Bool b; 7 b = 0; 8 printf("%d\n", b); 9 b = 1;10 printf("%d\n", b);11 b = 3;12 printf("%d\n", b);13 b = 4;14 printf("%d\n", b);15 printf("%d\n",sizeof(b));16 17 printf("%d\n",b);18 getchar();19 return 0;20 }

结果如下:

 

 

反汇编结果如下:

_Bool b;    b = 0;0119406E  mov         byte ptr [b],0      printf("%d\n", b);01194072  movzx       eax,byte ptr [b]  01194076  mov         esi,esp  01194078  push        eax  01194079  push        1195858h  0119407E  call        dword ptr ds:[1199110h]  01194084  add         esp,8  01194087  cmp         esi,esp  01194089  call        __RTC_CheckEsp (01191136h)      b = 1;0119408E  mov         byte ptr [b],1      printf("%d\n", b);01194092  movzx       eax,byte ptr [b]      printf("%d\n", b);01194096  mov         esi,esp  01194098  push        eax  01194099  push        1195858h  0119409E  call        dword ptr ds:[1199110h]  011940A4  add         esp,8  011940A7  cmp         esi,esp  011940A9  call        __RTC_CheckEsp (01191136h)      b = 3;011940AE  mov         eax,3  011940B3  test        eax,eax  011940B5  jne         main+73h (011940C3h)  011940B7  mov         dword ptr [ebp-0D0h],0  011940C1  jmp         main+7Dh (011940CDh)  011940C3  mov         dword ptr [ebp-0D0h],1  011940CD  mov         cl,byte ptr [ebp-0D0h]  011940D3  mov         byte ptr [b],cl      printf("%d\n", b);011940D6  movzx       eax,byte ptr [b]  011940DA  mov         esi,esp  011940DC  push        eax      printf("%d\n", b);011940DD  push        1195858h  011940E2  call        dword ptr ds:[1199110h]  011940E8  add         esp,8  011940EB  cmp         esi,esp  011940ED  call        __RTC_CheckEsp (01191136h)      b = 4;011940F2  mov         eax,4  011940F7  test        eax,eax  011940F9  jne         main+0B7h (01194107h)  011940FB  mov         dword ptr [ebp-0D0h],0  01194105  jmp         main+0C1h (01194111h)  01194107  mov         dword ptr [ebp-0D0h],1  01194111  mov         cl,byte ptr [ebp-0D0h]  01194117  mov         byte ptr [b],cl      printf("%d\n", b);0119411A  movzx       eax,byte ptr [b]  0119411E  mov         esi,esp  01194120  push        eax  01194121  push        1195858h  01194126  call        dword ptr ds:[1199110h]  0119412C  add         esp,8  0119412F  cmp         esi,esp  01194131  call        __RTC_CheckEsp (01191136h)      printf("%d\n",sizeof(b));01194136  mov         esi,esp  01194138  push        1  0119413A  push        1195858h  0119413F  call        dword ptr ds:[1199110h]  01194145  add         esp,8  01194148  cmp         esi,esp  0119414A  call        __RTC_CheckEsp (01191136h)

从结果可以看出,不为0就为1;

从反汇编的结果也可以看出

b = 4;011940F2  mov         eax,4  011940F7  test        eax,eax  011940F9  jne         main+0B7h (01194107h)  011940FB  mov         dword ptr [ebp-0D0h],0  01194105  jmp         main+0C1h (01194111h)  01194107  mov         dword ptr [ebp-0D0h],1  01194111  mov         cl,byte ptr [ebp-0D0h]  01194117  mov         byte ptr [b],cl

b  = 4

mov eax,4

首相 4 给了eax;

test eax,eax

只要不为0 就为1

这个就是 _Bool 类型的内部机制。

                                                        by:ECN14

 

转载于:https://www.cnblogs.com/ECN14/p/4154019.html

你可能感兴趣的文章
Device Tree Usage
查看>>
【雷电】源代码分析(二)-- 进入游戏攻击
查看>>
POJ 1220 高精度/进制转换
查看>>
cocos2d-x中CCLabelAtlas的小图片拼接
查看>>
【学习笔记】深入理解js原型和闭包系列学习笔记——精华
查看>>
深入理解js——prototype原型
查看>>
Entityframework:“System.Data.Entity.Internal.AppConfig”的类型初始值设定项引发异常。...
查看>>
Ubuntu 安装之python开发
查看>>
恶心的struts标签,等我毕业设计弄完了,瞧我怎么收拾你。
查看>>
Linux中防火墙centos
查看>>
hudson+apachecontinuum+ant
查看>>
mysql新建用户,用户授权,删除用户,修改密码
查看>>
实验五 TCP传输及加密
查看>>
【iOS】build diff: /../Podfile.lock: No such file or directory
查看>>
【Android Studio】使用 Genymotion 调试出现错误 INSTALL_FAILED_CPU_ABI_INCOMPATI
查看>>
FancyCoverFlow
查看>>
教你一分钟实现动态模糊效果
查看>>
C++中explicit的用法
查看>>
java 企业站源码 兼容手机平板PC 响应式 主流SSM框架 freemaker 静态引擎
查看>>
AliOS编译安装MyRocks
查看>>