/catalog/5b44b7aebbe041098fbfd868e044f805//Document/296736299995205.html/Document/267328648106053.html/Document/267018778099781.html/Document/266676511322181.html/Document/265619597201477.html/Document/235862026059845.html/Document/235543126302789.html/Document/235180874285125.html/Document/234831289405509.html/Document/234475373678661.html/Document/233059773943877.html/Document/232687006150725.html/Document/232354139811909.html/Document/230936619933765.html/Document/230597170643013.html/Document/230237883404357.html/Document/229522033393733.html/Document/228458058801221.html/Document/227760545189957.html/Document/227398664417349.html/Document/227055527931973.html

白盒测试——C/C++编程规范(16)
本系列文章将带大家一起解析一下白盒测试经常用到的GJB-8114标准规则,其中一共有124条强制性规则。GJB-8114强制性规则是按类分的,一共有13类,前面的文章已经讲过一部分,本文继续往下讲一下运算处理类规则。

R-1-6-9
数组下标必须是大于等于零的整型数


这个没什么好说的,不能用小数和负数。

R-1-6-10
禁止对常数值做逻辑非运算


这个是说我们对常数值进行逻辑运算也没什么问题,主要是不能做逻辑非的运算,逻辑非只对逻辑值的真假做非运算。

R-1-6-11
禁止非枚举类型变量使用枚举类型的值


这个是大家常犯的一个错误,我们在声明一个枚举的时候,把枚举中各个变量的值赋给了一个变量。

像违背示例中举的例子,把枚举中的第二个变量的值赋给了一个正整型的变量,这个就违反了规则。

往往枚举是自动初始化的,你可以不把第一个数初始化,它也会正常运行,这个时候它里面的枚举值到底是多少,有可能我们是不知道,所以这个赋值就存在不确定性。

在遵循示例中表示的是,我们定义了一个枚举变量,这个变量就取枚举中的第二个值。

R-1-6-12
除法运算中禁止被零除


说是被零除,实际上并不是指真真正正地被零除,比如说浮点数,有一些浮点数就接近于0,但是又不等于0,在这种情况下,你用一个大数去除以这个接近于0的数,它会溢出。实际上就是为了防止溢出,这里才规定了禁止被零除。

这里大家要明白一个“大数”和“小数”的概念,大数和小数进行加减操作通常是没有意义的,因为这个小数不可能影响到大数。它俩要是做乘除操作呢,比如说小数又是二阶的,一相乘就基本上等于0了,它要是一阶的,跟大数相乘有可能就很接近于一个正常的常数,这个就根据具体的实际情况去判断。

这里要求不能够被零除,咱们在运用当中,通常把这个取成十的负五次方,也就是说小于十的负五次方的数就可以理解为接近于0的数。

但是对于有些运算,这个数还是不够小,那可能需要取到十的负十次方。

R-1-6-13
禁止在sizeof中使用赋值


sizeof只是指向一种某种类型的名字、结构的名字等等,不能像违背示例中,进行赋值或者混合的运算。