把字符串转换为整数c++

img


class Solution {
public:
    int strToInt(string str) {
        int k = 0;
        while (k < str.size() && str[k] == ' ') k ++ ;
        long long res = 0;
        
        int minus = 1;
        if (k < str.size() && str[k] == '+') k ++ ; 
        if (k < str.size() && str[k] == '-') minus = -1, k ++ ;
        
        while (k < str.size() && str[k] >= '0' && str[k] <= '9')
        {
            res = res * 10 + str[k] - '0';
            if (res > INT_MIN) break;
            k ++ ;
        }
        
        res *= minus;
        if (res > INT_MAX) return INT_MAX;
        if (res < INT_MIN) return INT_MIN;
        return res;
        
    }
};

img

img

img

请问 res > INT_MIN 为什么是错的,改成res > 1e11就对了

因为int不能大于int_max 也不可能小于int_min