【发布时间】:2017-09-25 17:20:39
【问题描述】:
#define b1 0x01
#define b2 0x02
#define b3 0x04
#define b1 0x08
int flag = get_flag();
int x1 = ((flag & b1) ? 1 : 0) + ((flag & b2) ? 1 : 0);
int x2 = ((flag & b3) ? 1 : 0) + ((flag & b4) ? 1 : 0);
int x = max(x1, x2);
if (x < 1)
throw "fail";
int y = 1 / x; // <<< V609: Divide by zero. Denominator range [0..2]
如果x < 1,则不会评估y,但会生成V609。为什么?
【问题讨论】:
标签: pvs-studio