#1.字符串转整数
2017-05-31
要求:
把一个字符串转变成整数: eg. “19088” -> 19088, “-123” -> -123
考虑:
- 空指针
- 符号的正负
- 是包含非法字符:-, 0~9之外的。
- 结果是否溢出
知识点:
字符串指针:
1const char* strs[10] = {"aaa", "bb", nullptr, ..., "123"}字符串指针操作:
123char* s;s++; // 指针后移一位while(*s != 0){} // 是否到字符串尾部'\0'有符号整数(int)的范围:[-2^31, 0), [0, 2^31 - 1)
2147483647 -2147483648
+0, -0 占了两个名额,所以2^31-1判断 a + x 是否会溢出:
1234// a + x > INT_MAXif(x > 0 && (a > INT_MAX - x)) return true;// a + x < INT_MINif(x < 0 && (a < INT_MIN - x)) return true;判断 a * x 是否会溢出:
1234// a * x > INT_MAXif(x > 0 && (a > INT_MAX / x)) return true;// a * x < INT_MINif(x < 0 && (a < INT_MIN / x)) return true;
代码: