如果 - 其他声明不会奏效

时间:2012-08-09 16:08:42

标签: c if-statement

为什么我的if else if if语句不起作用?

   printf ("Enter 1 for midtern1 sorting , 2 for midterm2 sorting , 3 for final sorting\n");
   scanf ("%d",sort);

   if (sort=1){
      midterm1(x);
      for (i=9;i>=0;i--){
      printf ("%s %s %d\n",x[i].name,x[i].surname,x[i].mid1);}}
   else if (sort=2){
        midterm2(x);
        for (i=9;i>=0;i--){
        printf ("%s %s %d\n",x[i].name,x[i].surname,x[i].mid2);}}
   else if (sort=3){
        final(x);
        for (i=9;i>=0;i--){
        printf ("%s %s %d\n",x[i].name,x[i].surname,x[i].final);}}

我试过(sort == 1),(sort< = 1)但结果仍然相同。

6 个答案:

答案 0 :(得分:7)

两个问题:

(1)而不是

 if (sort=1)
你可能想要

 if (sort==1)

类似于您的所有if语句。提醒,'='是作业,'=='用于布尔比较。

(2)

scanf ("%d", sort);
             ^

需要&

scanf ("%d", &sort);
             ^

不幸的是,这些都是常见的问题/错误。如果你提高编译器的警告级别,它可能会帮助你避免其中的一些。

答案 1 :(得分:4)

您应该使用==代替=。第一个是比较,第二个是作业。

答案 2 :(得分:2)

if (sort=1){

需要

if (sort==1){

在您的代码中,您只是分配 sort 1的值,而不是比较

答案 3 :(得分:1)

通过将switch语句替换为switch case语句,通常可以使其他多个if语句更具可读性 - 请参阅此处了解语法http://msdn.microsoft.com/en-us/library/66k51h7a(v=vs.80).aspx

答案 4 :(得分:0)

正如其他人所说的那样,你需要使用==而不是=来表示if / else if语句。

你还应该看看bUKaneer关于在这种情况下使用switch语句的建议

答案 5 :(得分:0)

此行不正确

scanf ("%d",sort);

scanf需要指向要存储值的变量的指针。将其更改为

scanf ("%d",&sort);

此外,if-else if语句中的所有比较都不正确。使用比较(==)代替分配(=)。

请考虑使用if-else if结构替换switch - case语句,这样可以提高可读性。