首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >静态分析奇怪结果

静态分析奇怪结果
EN

Stack Overflow用户
提问于 2014-03-20 14:51:29
回答 1查看 63关注 0票数 2

我正在研究魔术数字的使用,我已经将我的实验简化为以下程序。我注意到,当我在Xcode中使用静态分析函数时,我得到了用于temp[4]比较的消息“‘temp[4]’的左操作数是一个垃圾值”。这是假阳性吗?如果是的话,原因何在?

代码语言:javascript
复制
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
  FILE *input;

  if(!(input = fopen("unknown_video.ext", "rb")))
    return(EXIT_FAILURE);

  int test_size = 10;

  int b = 0;
  int temp[test_size];

  while(b < test_size)
  {
    if((temp[b] = fgetc(input)) == EOF)
      break;

    b++;
  }

  fclose(input);

  if((temp[0] == 'R') && (temp[1] == 'I') && (temp[2]  == 'F') && (temp[3]  == 'F'))
  {
    printf("RIFF\n");
  }
  else if((temp[4] == 'f') && (temp[5] == 't') && (temp[6] == 'y') && (temp[7] == 'p'))
  {
    printf("QuickTime\n");
  }

  return(EXIT_SUCCESS);
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-20 15:00:39

临时数组中的所有值都可能是统一的。

看着这条线

代码语言:javascript
复制
while(b < test_size)
{
  if((temp[b] = fgetc(input)) == EOF)
    break;

  b++;
}

我们有可能fgetc立即返回EOF,从而对未初始化的值进行所有下面的测试。

解决这个问题的最简单方法是初始化temp数组。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22536676

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档