C语言里面是没有bool(布尔)类型的,C++里面才有,C语言里面用数值0表示假,非0整数表示真。在C++里面可以使用bool类型。bool类型只有两个值:true =1 、false=0。
bool可用于定义函数类型为布尔型,函数里可以有 return TRUE; return FALSE 之类的语句。
布尔型运算结果常用于条件语句:if (逻辑表达式){如果是 true 执行这里;}else{如果是 false 执行这里;};
扩展资料
Boolean(布尔)数据在C++中使用内置类型bool表示。bool类型的变量只可能有两个值true或false,在现实世界中它用于表示“是”或“否”、“高”或“低”等这种只有两个状态的事物。例如用于表示检测某年是否润年的函数,其返回值类型显示只有两种情况“是”或“否”。
bool IsLeapYear( const unsigned int year)
{ return (year % 4==0 && year % 100 !=0) || (year %400 ==0); }
没有统一的布尔类型在大型的工程项中特别是用到第三方程序库时,可能使用不同的手段模拟布尔类型以提交代码的可读性,这样会使得代码有些混乱。C++引入了bool内置类型,解决了代码的一致性问题。
参考资料来源:百度百科——bool
是你的这个宏#define bool (int) 有问题,(int)issorted;这个语句是不合法的!
//我是在c++编译器上实现的,可能是对的吧,你自己试试:
#include
#include
#include
#include
#include
#define bool int
#define true 0x0001
#define false 0x0000
#define maxsize 32767
#define minimum 0
#define maximum 32767
void bubblesort(int k[],int n)
{
int i,j,temp;
bool issorted;
for (i=0;i
for (j=0;j
temp = k[j];
k[j] = k[j+1];
k[j+1] = temp;
issorted = false;
}
}
if (issorted) break;
}
}
main()
{
int k[maxsize],counter=0,i=0,n;
printf("Please input the nums of data:");
scanf("%d",&n);
srand(time(NULL));
while (counter<=n) {
k[i]=minimum+rand()%(maximum-minimum);
counter++,i++;
}
bubblesort(k,counter);
printf("The sorted data(heapsort):\n");
for (i=1;i
if (i%10==0) printf("\n");
}
getch();
}
我猜测你的疑问是:a的第一个打印为啥是1,b的打印为啥不是1而是扫描值5?
我认为这是c编译器的特点吧,可以这么理解:
首先定义的时候bool一个变量,如果直接赋值是非零,编译器就自动转转为1了(这里是预编译阶段)。所以一开始就是1而不是2。之后有a的2次打印。最后一句判断a是0就不打印的。
然后说b,虽然定义了bool,但是扫描时候是按照int扫描的,内存中真的就是5了(并没有让编译器自动转换为1,因为是代码执行阶段了,不像预编译阶段那样自动转换)。
额外的,如果你给b减1的话,第一次减1结果b就变成1了(可以理解bool值变动时,如果发现大于1了,就减至1)。
以上都是习惯性的理解,没有什么特别的原理。就认为是编译器的动作吧,公理!
C语言本身没有bool类型
C++中有这个类型
在C中 bool类型 一般用int取代
或者自定义枚举
比如
typedef enum
{
FALSE,
TRUE
}bool;
C99提供了_Bool布尔类型。是_Bool而不是Bool。