我没有做太多的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 ++)呢?
答案 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) { ... }
这样的事情可能会破坏,甚至可能在不同的编译器/操作系统下表现不同。