本来是不想将笔记标题命名为“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);
}