在 C++ 代碼審查中,結合 limits 可以幫助您確保代碼的健壯性和安全性
std::numeric_limits
檢查整數類型的最大值和最小值。#include<limits>
#include<iostream>
int add(int a, int b) {
if (a > 0 && b > std::numeric_limits<int>::max() - a) {
std::cerr << "Integer overflow detected!"<< std::endl;
return std::numeric_limits<int>::max();
}
if (a < 0 && b < std::numeric_limits<int>::min() - a) {
std::cerr << "Integer underflow detected!"<< std::endl;
return std::numeric_limits<int>::min();
}
return a + b;
}
std::numeric_limits
檢查浮點數的精度和表示范圍。#include<limits>
#include<iostream>
#include <cmath>
double divide(double a, double b) {
if (std::abs(b) <= std::numeric_limits<double>::epsilon()) {
std::cerr << "Division by zero or close-to-zero value detected!"<< std::endl;
return std::numeric_limits<double>::quiet_NaN();
}
return a / b;
}
#include<limits>
#include<iostream>
unsigned int subtract(unsigned int a, unsigned int b) {
if (a < b) {
std::cerr << "Unsigned integer underflow detected!"<< std::endl;
return std::numeric_limits<unsigned int>::max();
}
return a - b;
}
#include<vector>
#include<iostream>
int getElement(const std::vector<int>& vec, size_t index) {
if (index >= vec.size()) {
std::cerr << "Array index out of bounds detected!"<< std::endl;
return -1; // 或者拋出異常
}
return vec[index];
}
通過在代碼審查中結合 std::numeric_limits
,您可以更好地確保代碼的健壯性和安全性。這將有助于防止潛在的錯誤和漏洞,從而提高代碼質量。