#QNANO在C中表示或意味着什么?

时间:2014-11-25 13:45:36

标签: c vector struct

#include<stdio.h>
#include<math.h>

int n;

struct vector
{
  int dir[100];
};
int dot(struct vector v1, struct vector v2)
{
  int dp,j;
  dp=0;
  for(j=0;j<n;j++)
  {
    dp = dp + (v1.dir[j]*v2.dir[j]);
  }
return dp;
}
float cosine(int vdot, float v1mod, float v2mod)
{
  float cos1, vdo = vdot;
  cos1 = (vdot/(v1mod*v2mod));
  return cos1;
}
  float modul(struct vector v1)
{
  int j;
  float v1mod;
  float deg = 0;
  for(j=0; j<n; j++)
   {
     deg = deg + ((v1.dir[j])*(v1.dir[j]));
   }
 v1mod = sqrt(deg);
}
int main()
  {
    int j;
    scanf("%d", &n);
    struct vector v1;
    struct vector v2;
    for(j=0;j<n;j++)
      {
         scanf("%d", &v1.dir[j]);
      }
    for(j=0;j<n;j++)
      {
         printf("%d/", v1.dir[j]);
      }
    printf("\n");

    for(j=0;j<n;j++)
      {
         scanf("%d", &v2.dir[j]);
      }
    for(j=0;j<n;j++)
      {
         printf("%d/", v2.dir[j]);
      }
         printf("\n");

    int vdot;

    float v1mod, v2mod, cos2;

    vdot = dot(v1,v2);
    printf("%d\n", vdot);

    v1mod = modul(v1);
    printf("%f\n", v1mod);

    v2mod = modul(v2);
    printf("%f\n", v2mod);

    cos2 = cosine(vdot, v1mod, v2mod);

    printf("cosine = %f\n", cos2);
  }

当我们编译代码时,余弦的输出显示“1.#QNANO。 我检查了所有的网站,但没有在哪里找到正确的原因发生 错误。 也可以指定有多少这样的错误类型。 **代码中的错误是故意的。

2 个答案:

答案 0 :(得分:4)

Q可能意味着它是quiet not-a-numberO可能意味着溢出。

您使用了什么确切的平台和编译器?

答案 1 :(得分:0)

所以我运行了一些代码并做了一些实验并遇到了这个错误。 (#QNANO) 我能提出的最有效的解释是数据说明符不匹配,即看看这个简单的代码:

#include<stdio.h>
int main()
{
  int a,c;
  a = 2;
  float b;
  b = 3;
  c = a*b;
  printf("%f",c);
  return 0;
}

这个简单代码的输出是-1 #QNANO,所以我假设整数变量乘以浮点变量,结果存储在整数变量中,但是当我们打印c的值时,我们这样做使用%f,则整数变量无法转换为float,因此错误会被抛出。