如何解决在C中有和没有看似不必要的指针声明
int exercise1c (void){
int arr[] = {12,7,-3,4,1};
int *numb = arr;
int i;
int sum;
while (i<5){
sum += *(arr + i);
i++;
}
printf("%d",sum);
return 0;
}
但是,我注意到int *numb = arr;
行并未真正在任何地方使用。因此,我尝试删除它,这导致了一个非常奇怪的随机数(例如15775252)。谁能向我解释为什么删除该行会导致此问题?
解决方法
您使用不确定的未初始化非静态局部变量int sum;
的值来调用未定义行为。
然后,似乎删除该行会以某种方式影响编译器的优化过程。
初始化变量(例如int sum = 0;
)可以避免此问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。