【问题标题】:incompatible types when assigning to type 'struct protein' from type 'int'从“int”类型分配给“struct protein”类型时不兼容的类型
【发布时间】:2018-04-03 02:15:52
【问题描述】:

我已经在我的程序的这一部分工作了一段时间,但我似乎无法弄清楚最后一点有什么问题。

对于“protein_powders[largest] = temp;”这一行我收到以下错误:从“int”类型分配给“struct protein”类型时不兼容的类型

我该如何解决?

提前致谢!

 void selection_sort(struct protein protein_powders[], int n)
 {
   struct protein temp;
   int i, largest = 0, temp;  
   if (n == 1)  
   return;

for (i = 1; i < n; i++)
{   
if (protein_powders[i].averageReview < 
 protein_powders[largest].averageReview)   
       largest = i;  
   if (largest < n - 1) 
  {temp = protein_powders[n-1];}

protein_powders[n-1] = protein_powders[largest];  
protein_powders[largest] = temp;   

selection_sort(protein_powders, n - 1);
}

【问题讨论】:

  • 您的代码中声明了两个temp?删除int temp 只保留struct protein temp;
  • 你是如何定义结构的?

标签: c


【解决方案1】:

您使用的是哪种语言和哪种编译方式。您的代码有几个疑问。首先,相同变量 temp 的重复声明。它应该抛出编译错误,类似于 error: conflicting declaration ‘protein temp’ 。 只需选择不同的名称,它应该可以解决您的问题。

【讨论】:

    【解决方案2】:

    您的代码中有struct protein temp;int temp;,这会导致各种混乱(对您和编译器而言)。

    看起来你只需要结构版本。如果您确实需要将 int 版本重命名为 temp_index 或类似名称。

    在启用所有警告的情况下编译可能会突出显示这是一个问题。

    【讨论】:

      猜你喜欢
      • 2015-03-01
      • 1970-01-01
      • 2016-03-25
      • 2021-01-17
      • 1970-01-01
      • 2021-02-10
      • 1970-01-01
      • 2016-01-23
      • 2016-02-24
      相关资源
      最近更新 更多