bool, int, float与零的比较

0. 前言

编程不是单打独斗,而是团队合作.

遵循一定的规则, 可以从程序上提高效率,减少出错的概率, 并不是要我们遵循"标准答案".

活跃的思维和规范的编程风格并不冲突.

1. 定义bool型变量flag, 与零值进行比较:

可能的写法:

  • if(flag == 0)
  • if(flag == FALSE)
  • if(flag)

在逻辑上, 上面三个都是正确的,而且都可以编译通过. 但是, 第一个会让人误以为flag是整型变量,因为这种写法flag可以与0在数值上进行比较,也可以与其他整型比较,明显暗示了flag是一个整型变量, 或者没法让别人一眼看出来flag是一个bool型变量.第二种写法, 既然有if(flag == FALSE), 那么不可避免会写if(flag == TRUE).TRUE的值是0, 但是FALSE的值呢?并不确定! VC++ 中TRUE的值1, VB中TRUE的值是-1.

正是因为TRUE的值不确定,所以任何比较都不建议与TRUE或者FLASE进行比较.

第三种,是推荐的广为认可的, 对bool型变量与零值进行比较的方法.

if(flag), if(!flag)

2. 浮点型变量flag与零值比较

可能很多人都知道, 浮点型变量与任何数比较的时候, 都不可以直接比较.

因为浮点数是一种不精确的储存方式.

但是规范的写法是怎样的呢?你不一定写对:

const float EPSINON = 0.00001;

if( (x >= -EPSINON ) && (x <= EPSIONO) )

比较之前首先要设置比较的精度值, 是一个常量;

使用EPSINON可以让你的同事很好地理解你的意图.

3. 指针与零值进行比较

这个大家应该都没问题:

if(NULL == flag)

别人一看就知道flag是指针变量, 而且NULL在前防止不小心少些一个=, 变成了赋值,

这样的话你可能检查不出来, 因为flag = NULL 总是为0, 编译不会报错(VS比较智能,可能会报错).

原文地址:https://www.cnblogs.com/Younger-Zhang/p/10452934.html

时间: 2024-11-07 09:05:13

bool, int, float与零的比较的相关文章

速战速决 (2) - PHP: 数据类型 bool, int, float, string, object, array

[源码下载] 作者:webabcd 介绍速战速决 之 PHP 数据类型 bool, int, float, string, object, array 示例1.数据类型: bool, int, float, string, objectbasic/type1.php <?php /** * 数据类型: bool, int, float, string, object */ // 布尔类型(true, false 不分大小写) $b = true; if ($b) { echo "true&

关于c中 int, float, double转换中存在的精度损失问题

先看一段代码实验: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 #include<limits> #include<iostream> using namespace std; int main() {     unsigned int i = numeric_limits<unsigned int >::max();     float f = i;     unsigned

Second: 基本类型-数值型(int, float)

基本类型中数值类型有 int, float, Decimal, Fraction 其中int 和 float 是比较常见的类型, 而Decimal 和 Fraction 不是那么常见, 所以暂时学习int 和 float. Division (/) always returns a float To do floor division and get an integer result (discarding any fractional result) you can use the // o

java中int,float,long,double取值范围,内存泄露

java中int,float,long,double取值范围是多少? 写道 public class TestOutOfBound { public static void main(String[] args) { System.out.println(Integer.MAX_VALUE-(-Integer.MAX_VALUE)); //内存溢出System.out.println(Integer.MAX_VALUE); //2的31次方-1,10个数位,正的20亿左右,用在钱上面不一定够Sy

int float string按宽度精度输出

1 #include <stdio.h> 2 3 int main(void) 4 { 5 int a = 99; 6 float b = 9.9; 7 char c[] = "hello"; 8 9 printf("*%010d*\n", a); 10 printf("*%10.3d*\n", a); 11 printf("*%-10.3d*\n", a); 12 printf("*%010.3d*\n

swift 之嵌套的理解 func chooseStepFunction(backwards: Bool) -&gt; (Int) -&gt; Int

http://blog.csdn.net/lzx_322/article/details/28861199 swift 函数使用前面需要添加 func 有返回值需要使用-> 后面添加返回类型 ,很容易理解,在看英文版的pdf文档时候看到嵌套函数的返回值,刚开始没有太明白,仔细思考了一会还是很容易理解的: 例如:func stepBackward(input: Int) -> Int {return input - 1} 返回值是int型的. func chooseStepFunction(ba

[C++] string与int, float, double相互转换

参考:http://blog.csdn.net/candadition/article/details/7342380 将string类型转换为int, float, double类型 主要通过以下几种方式: # 方法一: 使用stringstream stringstream在int或float类型转换为string类型的方法中已经介绍过, 这里也能用作将string类型转换为常用的数值类型. Demo: #include <iostream> #include <sstream>

double转为string (int\float等类似)

Cpp代码   Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->#include <string> #inlcude <sstream> int main(){ double   d=123.456; string   str; stringstream   ss; ss<<d; ss>>str; } st

C 语言实例 - 计算 int, float, double 和 char 字节大小。

使用 sizeof 操作符计算int, float, double 和 char四种变量字节大小. sizeof 是 C 语言的一种单目操作符,如C语言的其他操作符++.--等,它并不是函数. sizeof 操作符以字节形式给出了其操作数的存储大小. #include <stdio.h>int main(){    int integerType;    float floatType;    double doubleType;    char charType;    // sizeof