返回错误值的函数[关闭]
Posted
技术标签:
【中文标题】返回错误值的函数[关闭]【英文标题】:Function returning wrong values [closed] 【发布时间】:2021-07-17 06:08:05 【问题描述】:我正在学习用 C 编写代码,但遇到了函数问题,当您输入值时,它会为您提供 0.00 + randomnumber.000000000000000000000000i 我使用相同的 printf 来尝试查找代码内部是否发生了某些事情,但问题似乎出在函数 func_complejo 本身中。我做错了什么?
#include <stdio.h> //entrada y salida
typedef struct
float real, imaginario;
complejo;
complejo func_complejo(void);
void func_mostrarComplejo(complejo complejoOut);
int main()
complejo complejoAux;
complejoAux = func_complejo();
printf("\nEl numero ingresado es %.2f + %.2fi", &complejoAux.real, &complejoAux.imaginario);
func_mostrarComplejo(complejoAux);
return 0;
complejo func_complejo(void)
complejo complejoIn;
printf("\nIngrese la parte real de un complejo: ");
scanf("%f", &complejoIn.real);
printf("\nAhora ingrese la parte imaginaria de un complejo: ");
scanf("%f", &complejoIn.imaginario);
printf("\nEl numero ingresado es %.2f + %.2fi", &complejoIn.real, &complejoIn.imaginario);
return complejoIn;
void func_mostrarComplejo(complejo complejoOut)
printf("\nEl numero ingresado es %.2f + %.2fi", &complejoOut.real, &complejoOut.imaginario);
【问题讨论】:
【参考方案1】:在您的每个printf
调用中,您都传递了一个float *
以匹配一个%f
格式说明符,该说明符需要一个float
或double
。格式说明符不匹配会触发 undefined behavior,这就是您看到结果的原因。
您无需传递printf
的地址。 scanf
函数需要地址,以便它可以写入相关变量。
这些错误可以通过去掉每个 printf
调用中的地址运算符来修复:
printf("\nEl numero ingresado es %.2f + %.2fi", complejoAux.real, complejoAux.imaginario);
【讨论】:
以上是关于返回错误值的函数[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
创建返回实现 serde::Deserialize 的值的函数时的生命周期错误