long long int find(int n) { int nn = 1; for (int i = 0; i < n; i++) { nn *= 2; } return nn; } int main() { cout << find(50); return 0; }
结果是错的,为什么。(测试一下它是按照int类型输出的)
慕粉18341035298
浏览 3310回答 1
1回答
onemoo
虽然 find 函数的返回类型是 long long int,但是函数中的 nn 却是 int 类型!函数中 nn 参与的所有运算也都是 int 的,所以最后 nn 中的数据太大溢出了。nn 中的数据已经不正确了,函数返回时的返回值由 nn 初始化,那么返回值自然也是不正确的,即便返回值类型是 long long int...将 find 函数中的 nn 同样改为 long long int 就好了