如何解决我的代码C ++在IDE中有效,但在hackerrank中无效
#include <iostream>
#include <cmath>
using namespace std;
int main() {
int n;
cin >> n;
int a[n];
for(int i = 0; i < n; i++) {
cin >> a[i];
}
int res,k = 0;
for(int i = 0; i < n; i++) {
int x,y = 0;
for(int j = 0; j <= i; j++) {
x += a[j];
}
for(int j = n-1; j > i; j--) {
y += a[j];
}
if(res > abs(x-y)) {
res = abs(x-y);
k = i+1;
}
x = 0;
y = 0;
}
cout << k;
}
我的代码在Visual Studio代码中工作正常,但在hackerrank中显示此错误
Solution.cpp: In function ‘int main()’:
Solution.cpp:22:9: warning: ‘res’ may be used uninitialized in this function [-Wmaybe-uninitialized]
if(res > abs(x-y)) {
^~
很明显,我已经定义了res变量,我在哪里做错了?
解决方法
要将res
和k
都初始化为0,您需要执行以下操作:
int res = 0,k = 0;
或
int res = 0;
int k = 0;
但不是
int res,k = 0;
错误告诉您,在声明res
的同时,有可能在将其设置为某个值之前尝试使用它。
hackerank所说的是真的,您在res
比较中使用if(res > abs(x-y))
进行初始化。
实际上,您只声明它,而不在使用前初始化它。
如果您的IDE中的编译器未显示该错误,则可能默认情况下具有一些抑制这些警告类型的选项。
在下面的语句中使用它之前,您需要设置或初始化res。
if(res > abs(x-y)) {
res = abs(x-y);
k = i+1;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。