[英]Calling a function in C with variables not being outputted
这就是现在的样子,但它告诉我变量'result'未被使用。 为什么是这样? 我想我已经弄清楚在这个程序中使用了这个函数,但我还是无法完成所有的配置。 还需要一些帮助,谢谢。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
double computeSomething(unsigned int maxDamage, unsigned int minDamage,
double playerArmor, double actualDamage);
int main(void){
double playerHealth, playerArmor, actualDamage, result = 0;
unsigned int minDamage, maxDamage;
printf("Enter Player Health: ");
scanf("%lf", &playerHealth);
printf("Enter Player Armor (0.0 - 1.0): ");
scanf("%lf", &playerArmor);
printf("Enter Minimum Damage Dealt: ");
scanf("%u", &minDamage);
printf("Enter Maximum Damage Dealt: ");
scanf("%u", &maxDamage);
srand((unsigned int) time(NULL));
while (playerHealth > 0) {
double result = computeSomething(maxDamage, minDamage, playerArmor, actualDamage);
playerHealth -= actualDamage;
printf("Current Player Health:%.2lf\tDamage Dealt: %.2lf\t", playerHealth, actualDamage);
if (playerHealth > 0){
printf("Alive: 1\n");
} else {
printf("Alive: 0\n");
}
}
return 1;
}
double computeSomething(unsigned int maxDamage, unsigned int minDamage,
double playerArmor, double actualDamage)
{
actualDamage = ((rand() % (maxDamage-minDamage + 1)) + minDamage) * (1 - playerArmor);
return actualDamage;
}
编辑3
从以下位置更改原型:
double computeSomething(unsigned int maxDamage, unsigned int minDamage,
double playerArmor, double actualDamage);
至:
double computeSomething(unsigned int maxDamage, unsigned int minDamage,
double playerArmor, double *actualDamage);
像这样称呼它:
float res;
computeSomething(34, 15, 30.5, &res);
有关如何在实际功能中修改结果,请参阅下面的最新示例。
我无法创建一个要求的功能。 这就是我需要做的全部。
这定义了一个从main()
调用的函数;
(对于更具体的内容,请具体描述)
编辑
添加了一个传递值,计算内容并返回结果的函数。 也许您可以将这些原则应用于您的问题。 (我从你提供的描述中并不完全了解你的需求)
//prototypes
void PrintSomething(char *str);
float compute_something(float x, float y, float z);//per clarification in comments above
void return_through_param(float x, float y, float *result);
int main(void)
{
PrintSomething("Hello World\n");
//function that can return something
float result = compute_something(10.0, 3.5, .002);
printf("Here are the results: %f\n", result);
//for Edit 2:
return_through_param(10, .0001, &result);
printf("This is the new result: %f\n", result);
return 0;
}
void PrintSomething(char *str)
{
printf(str);
}
//Edit - Added this function
float compute_something(float x, float y, float z)
{
return x*y/z;
}
//Edit 2 - added this function that passes pointer, for output
void return_through_param(float x, float y, float *result)
{
return *result = x/y;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.