c语言中有bool类型吗?

2024-11-26 12:33:39
推荐回答(5个)
回答1:

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

回答2:

是你的这个宏#define bool (int) 有问题,(int)issorted;这个语句是不合法的!

//我是在c++编译器上实现的,可能是对的吧,你自己试试:
#include //c的输入输出使用这个
#include //这个是c++ 的 去掉就可以了
#include
#include //这是c的
#include //这个也是c的getch()函数的头文件

#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 issorted = true;
for (j=0;j if (k[j]>k[j+1]) {
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 printf("%7d",k[i]);
if (i%10==0) printf("\n");
}
getch();
}

回答3:

我猜测你的疑问是: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)。
以上都是习惯性的理解,没有什么特别的原理。就认为是编译器的动作吧,公理!

回答4:

C语言本身没有bool类型

C++中有这个类型

在C中 bool类型 一般用int取代

或者自定义枚举

比如

typedef enum
{
    FALSE,
    TRUE
}bool;

回答5:

C99提供了_Bool布尔类型。是_Bool而不是Bool。