if判断不成立,但是还是执行了花括号后面的语句

2025-03-23 05:12:56
推荐回答(2个)
回答1:

if判断不成立是不会执行后面。你是说哪个if不成立呢?是第一个if(Z.Imagpart)条件吗?
是的话,请看下面分析,不是的话,欢迎随时追问:
不知道你清不清楚在c++中只要非零就是真,即Imagpart的值不是零就成立。
不过在输出结果看出Z.Imagpart的结果好像就是零,不过实际上它真实值不一定是零,因为你用输出控制符“%.2f”舍去了两位后的小数。所以 我猜,Imagpart的值的范围是0

回答2:

你的 z.imagpart 如果是 float 或 double 型数据 并含有 截断误差,即使是 1e-07 或更小, if 条件就是真。 因为 只有 0 才是假,其它,只要不是0,无论正数还是负数,无论数值多大多小,就是真。
你取2位输出,显示 0.00i, 不能说明 它不是逻辑值“真”。
你也许要用 if ( fabs( z.imagpart) < EPS)的方法 定义 你的条件, EPS 是精度值。