Điều kiện
10.1 là kiểm tra bình đẳng chính xác được sử dụng trên số điểm nổi?
If (someVar == 0.1)
có thể không bao giờ được đánh giá là đúng. Hằng số 0,1 là không chính xác biểu diễn bởi bất kỳ
mantissa nhị phân hữu hạn và số mũ, do đó trình biên dịch phải làm tròn đến một số khác
số. Tính toán liên quan someVar có thể không bao giờ dẫn nó lấy trên giá trị đó.
Giải pháp: sử dụng>,> =, <, hoặc <=, tùy thuộc vào hướng bạn muốn biến ràng buộc.
10.2 có giá trị unsigned thử nghiệm lớn hơn hoặc bằng số không?
Nếu (myUnsignedVar> = 0)
sẽ luôn luôn đánh giá đúng.
10,3 đang ký biến thử nghiệm cho sự bình đẳng để không hay khác không đổi?
if (mySignedVar) // không phải luôn luôn tốt
nếu (mySignedVar> = 0) // tốt hơn!
if (mySignedVar <= 0 ) // đối diện trường hợp
Nếu biến được cập nhật bởi bất kỳ phương tiện khác ngoài ++ hoặc -, nó có thể bỏ lỡ các giá trị của các
hằng số thử nghiệm hoàn toàn. Điều này có thể gây ra lỗi tinh tế và đáng sợ khi đoạn mã thực thi
trong điều kiện mà không được lên kế hoạch cho.
10.4 Nếu xét nghiệm là một kiểm tra lỗi, có thể là "tình trạng lỗi" thực sự là chính đáng trong một số
trường hợp?
đang được dịch, vui lòng đợi..
