gpt4 book ai didi

c - 错误: invalid operands to binary + (have 'int (*)()' and 'int (*)()' )

转载 作者:行者123 更新时间:2023-11-30 21:31:27 31 4
gpt4 key购买 nike

我正在创建以下代码,该代码根据学生对消极应对策略的使用以及对低 self 形象相关陈述的同意来推断他们的压力水平。下面是我的代码,粗体是我遇到问题的部分:

void statements (void);
void printweightsstatements(void);
void coping (void);
void printweightscoping(void);
void advice ();
int cumweightstatement();
int cumweightcoping();

void main()
{
statements ();
coping ();
**if (int cumweightstatement + int cumweightcoping>=20)**

printf ("You are very stressed and at a high risk for depression. Please
see a doctor or psychiaqtrist as soon as possible\n");
else if (cumweightstatement + cumweightcoping>=15 && int cumweightstatement + int cumweightcoping<20)
printf ("You are quite stressed and at a moderate risk for depression. Please see your school guidance counselor\n");
else if (cumweightstatement + cumweightcoping<=14)
printf ("You are mildly stressed and at a low risk for depression, but you could still benefit from using positive coping strategies\n")
}

void printweightsstatements()
{
printf("1:Strongly disagree\n");
printf("2:Disagree\n");
printf("3:Neither agree nor disagree\n");
printf("4:Agree\n");
printf("5:Strongly agree\n");

}


void statements(void)

{
int weight1;
int weight2;
int weight3;
int weight4;

printf ("How much do you agree with the following statements?\n");

printf ("Statement 1: I have trouble concentrating on my homework for 1 hour straight\n");
printweightsstatements;
printf("1:Strongly disagree\n");
printf("2:Disagree\n");
printf("3:Neither agree nor disagree\n");
printf("4:Agree\n");
printf("5:Strongly agree\n");

printf ("Statement 2: I do not have much control over events in my life\n");
printweightsstatements;
printf("1:Strongly disagree\n");
printf("2:Disagree\n");
printf("3:Neither agree nor disagree\n");
printf("4:Agree\n");
printf("5:Strongly agree\n");
scanf("%d", &weight2);
printf ("Statement 3: During this school year, I have been stressed a lot\n");
printweightsstatements;
printf("1:Strongly disagree\n");
printf("2:Disagree\n");
printf("3:Neither agree nor disagree\n");
printf("4:Agree\n");
printf("5:Strongly agree\n");
scanf("%d", &weight3);
printf ("Statement 4: Although I try very hard, there is always some schoolwork too difficult for me\n");
printf("1:Strongly disagree\n");
printf("2:Disagree\n");
printf("3:Neither agree nor disagree\n");
printf("4:Agree\n");
printf("5:Strongly agree\n");
scanf("%d", &weight4);
printweightsstatements;

int cumweightstatement=weight1+weight2+weight3+weight4;
}


void coping (void);
{
int weight1;
int weight2;
int weight3;
int weight4;
int weight5;

printf ("How often do you use each of the following coping strategies?\n");
printf ("Strategy 1: Negative self-talk (for example, I can’t do this,this is too hard for me, I’ll never get good at this)\n");
printweightscoping;
scanf("%d", &weight1);
printf ("Strategy 2: Overusing Internet/social media/phone for non-school-related activities (over 1 hour/day)\n");
printweightscoping;
scanf("%d", &weight2);
printf ("Strategy 3: Extended sleep or naps (above 8-9 hours of regular sleep)\n");
printweightscoping;
scanf("%d", &weight3);
printf ("Strategy 4:Procrastination or avoiding the task (leaving your schoolwork to the last minute, or not doing it at all)\n");
printweightscoping;
scanf("%d", &weight4);
printf ("Strategy 5:Denial (ignoring your problems and keep doing things the same way)\n");
printweightscoping;
scanf("%d", &weight5);
int cumweightcoping=weight1+weight2+weight3+weight4;
}

void printweightscoping(void);
{
printf("1:Never\n");
printf("2:Rarely(less than weekly) \n");
printf("3:Sometimes(once a week)\n");
printf("4:Often (several times a week)\n");
printf("5:Always (about daily")
}

这是日志。您知道如何修复这些错误吗?

main.c: In function 'main':
main.c:23:9: error: expected expression before 'int'

main.c:25:33: error: invalid operands to binary + (have 'int (*)()' and 'int (*)
main.c:25:58: error: expected expression before 'int'
^
main.c:27:33: error: invalid operands to binary + (have 'int (*)()' and 'int (*)
expected identifier or '(' before '{' token

最佳答案

一个“;”行尾缺失

    printf ("You are mildly stressed and at a low risk for depression, but you could still benefit from using positive coping strategies\n")

正如评论中所说,你在某些行中有一些奇怪的声明

    else if (cumweightstatement + cumweightcoping>=15 && int cumweightstatement + int cumweightcoping<20)

如果你想将变量转换为 int,请使用

    (int)your_variable

但是你将 cumweightstatement 和 cumweightcoping 声明为函数,而不是简单的变量......

    int cumweightstatement();
int cumweightcoping();

函数的名称是它在内存中的地址,这解释了为什么编译器提示添加一些指针(二进制+的无效操作数(有'int(*)()'和'int(*)()')

编辑:您的代码中有很多错误,您声明为函数的变量之间存在混淆: int cumweightstatement(); 应该是 int cumweightstatement;以及一些未正确完成的函数调用,例如 printweightsstatements; 应该是 printweightsstatements();

在函数外部声明变量使其成为全局变量:您可以从文件中的任何函数访问它。在函数中声明变量会使其成为区域设置:您无法在其范围之外访问它。即:当您声明时,例如在 void statements(void) 中:

    int cumweightstatement=weight1+weight2+weight3+weight4;

您声明一个区域设置变量cumweightstatement,并对其影响每个权重的总和。但一旦退出该功能,您就会失去它。

从您拥有的代码开始,最简单的方法是使用全局变量,您可能会尝试对声明执行以下操作

    int cumweightstatement();

但是,这又创建了一个函数,而不是全局变量。

此链接https://www.codingunit.com/c-tutorial-functions-and-global-local-variables将为您提供一些声明函数和语言环境/全局变量的基础

关于c - 错误: invalid operands to binary + (have 'int (*)()' and 'int (*)()' ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50024518/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com