我正在使用c语言对代码进行单元测试,我想如果我不使用MAX+1
数据类型值的测试输入,可能会有什么危害。
通常,如果值溢出其MAX
容量,c会将变量值包装到最小值。例如:如果在char
之后0-255
(范围:255
)增加,则会0
。
是否有任何示例,如果未完成测试MAX+1
如果值回滚到数据类型的MIN值,那将会非常有害?
答案 0 :(得分:1)
使用MAX+1
进行测试是否有意义取决于您是否对MAX+1
的功能的行为有期望,以防将来可能发生某些潜在变化。假设一个函数foo(uint8_t u)
:通常应避免使用参数为256
的函数,并且您可能会得到警告。尽管如此,它仍然是允许的,并且意味着0
的值实际上已传递给该函数。
这里的情况是,类型不匹配由编译器以导致值更改的方式处理,即在modulo 256
操作的隐式计算中。如果您出于某种原因拥有依赖于此的代码,那么拥有相应的测试用例就很有意义。这样可以避免参数类型从utf8_t
变为utf16_t
的情况:这种变化意味着将原来的隐式modulo 256
转换为隐式{{1} }。
请注意,在我看来,将类型转换用于模运算并不是一个好习惯。也就是说,如果呼叫者想要进行modulo 65536
操作,则呼叫者应使其像呼叫modulo 256
中那样显式。