我应该使用C(99)布尔值吗? (也是c ++中的c ++ booleans?)

时间:2010-06-09 21:43:33

标签: c++ c boolean c99

我没有做太多的c编程,但是当我需要一个假的时候我把0放在我想要的时候我把它放1,(例如,while(1)),在其他情况下我使用像“while”这样的东西ptr)“或”if(x)“。

我是否应该尝试使用C99布尔值,如果我帮助新手编程学习基础知识(思考cs 1 ??学生),我是否应该向他人推荐?

我很确定Visual Studio编译器支持c99 bools,但是为c89编译了很多项目(工业界的开源和c应用程序)吗?如果我不使用C bools,我至少应该做#define TRUE 1 #define FALSE 0这样的事情吗?

那么c ++ Booleans(对于c ++)呢?

5 个答案:

答案 0 :(得分:5)

在C ++中没有理由不使用它。在C中,我只使用int来完成此任务,没有任何#define或类似的东西。在我看来,像isDefinition这样的变量名称很清楚,足以表明发生了什么。

当然,定义自己的bool或使用<stdbool.h>的bool没有错。

答案 1 :(得分:3)

是的,您应该在语言抽象可用时使用它们。当我使用旧的C编译器时,我仍然会创建一个bool的抽象。在代码中使用文字是一种非常糟糕的做法。

答案 2 :(得分:2)

C ++布尔值很好,因为它们是语言的一部分,并且现在基本上都支持任何C ++编译器。

C99布尔值似乎是一个好主意,但请记住,您今天编写的代码是否需要在C89项目中使用...

答案 3 :(得分:2)

当编译器知道变量是布尔值时,它可以做更好的优化。此外,在使用int时,在按位上下文中使用时更容易引入错误,因为int可能无意中设置为1以外的值

答案 4 :(得分:1)

在C ++中使用bool。它已存在多年,每个C ++编译器都支持它, 如果您的代码需要其他C99功能,请在C中使用它。 不要在C99之前的代码中使用它,因为任何非零值都将被解释为true,并且使用定义可能会导致难以跟踪的错误(某些C库函数被记录为返回任何非零int价值,即使写一些类似

的做法通常也很糟糕
if (var==TRUE) { ... }

这样的事情可能会破坏,甚至可能在不同的编译器/操作系统下表现不同。