VC下的BOOL

来源:互联网 发布:上海驿友微盒软件 编辑:程序博客网 时间:2024/04/26 16:02

      本来是不想将笔记标题命名为“VC下的BOOL”的,因为我碰到的是另外一个问题,现在还没有解决,不过自己反而通过这个问题了解到了一些有关BOOL与bool之间的知识。在这里谈谈自己的认识:bool为C++中的关键字,bool类型属于整形,但它的大小是未定的。在VC中,有关它大小的实现曾经也不相同,在VC ++4.2之前,其大小是4Byte,而在VC++5.0之后,其大小为1Byte,因此如果一个工程混有MFC4.2和MFC5.0的obj,dll文件可能会出现内存冲突等问题。因此在MFC中有了一个关于BOOL的宏定义,定义为int类型,一可以提高其兼容性;二可以灵活运用BOOL,因为bool只有两个值,而BOOL为整形,据说可以返回多种接口状态(这个我也不大懂,不过听牛们这么说的,暂且这样认为吧。)。

    附:在C原来的标准中并没有关于bool的定义,之前的逻辑表达式中非零值即表示逻辑真,零表示逻辑假。而ANSI 99中引入了新的关键字_Bool,此类型的变量只有两个值——1,0,1就真,0假咯。后来C99又提供了一个stdbool.h的头文件,所以就可以使用bool来代替_Bool,true来代表1,false来代表0.在程序中包含这个头文件可以写出与C++兼容的代码。C++中bool,true,false是关键字。

      下面简要描述下我遇到的问题:打算在VC ++6.0下完成一个小程序,即统计输入字符串中“ei”的个数,不过有两个问题:一是VC下我用bool用了好久都没有成功.二是对#include<windows.h>这个头文件的使用,只有添加了这个头文件才能够编译通过。过路人不妨发发言,提醒提醒,感激不尽!

源代码:

#include <stdio.h>
#include <windows.h>

#define STOP '#'
int main(void)
{
    int Counter = 0;
    char ch;
    BOOL flag = FALSE;
 
    while((ch =getchar()) != STOP)
    {
  
        if(ch == 'e')
        {
            flag = TRUE;
            continue;
        }
        if(ch == 'i' && flag)
            Counter++;
        flag = FALSE;
 
     }
     printf("/'ei/' appear %d times/n",Counter);
}

原创粉丝点击