“左值作为任务的左操作数”

时间:2015-03-24 05:23:59

标签: c lvalue

查看涉及相同错误的其他问题,但不太明白为什么我会收到错误。

我试图将一个方程分配给同名函数中的变量?

我是新手,所以如果有人能向我解释为什么会发生这种情况会很棒。

从底部开始的第五行是我收到错误的地方

#define DAYS_PER_WEEK 7

#define THURSDAY 0
#define FRIDAY   1
#define SATURDAY 2
#define SUNDAY   3
#define MONDAY   4
#define TUESDAY  5
#define WEDNESDAY 6

#define TRUE 1
#define FALSE 0
#define DAYS_PER_WEEK 7

int dayOfWeek (int doomsday, int leapYear, int month, int day);

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

   dayOfWeek(SUNDAY, FALSE, 1, 10);

   return EXIT_SUCCESS;
}

int dayOfWeek (int doomsday, int leapYear, int month, int day) {
   if (month == 1) {
      int doomsDate = 4;
      dayOfWeek = (day + doomsDate)/DAYS_PER_WEEK);
      printf ("The day of the week is: =%d\n",dayOfWeek);
   }
   return dayOfWeek;
 }

所以@Gopi解释了为什么我把这个功能改成了

int dayOfWeek (int doomsday, int leapYear, int month, int day) {
   if (month == 1) {
      int doomsDate = 4;
      int dayNum = (day + doomsDate)/DAYS_PER_WEEK;
      printf ("The day of the week is: =%d\n",dayNum);
   }
   return dayOfWeek;
}

我需要满足以下断言:

assert (dayOfWeek (SUNDAY, FALSE, 1, 10) == SATURDAY); 

我该怎么做...

2 个答案:

答案 0 :(得分:0)

dayOfWeek = (day + doomsDate)/DAYS_PER_WEEK);

dayOfWeek是一个函数名称,因此它不能是可赋值的左值。

  

我试图将方程分配给函数中的变量   同名?

函数dayOfWeek中没有变量dayOfWeek()

答案 1 :(得分:0)

编辑前:

请不要假设函数内自动定义任何变量。它必须在参数(列表)或函数体中定义。

此外,功能名称不是变量。它不是左值

P.S - 不考虑全局


编辑后:

  

我希望它返回dayOfWeek,我希望它与dayNum一样......我怎么能这样做?

在编辑过的代码中,return dayOfWeek;无效,因为没有名为dayOfWeek;的变量。你需要(并且必须)写

 return dayNum;