C 程序的意外终止
我是C语言的新手,正在使用scanf函数。我要求用户输入的数字是一个名为myNumber的长整数。但是,当我输入值时,程序给出“分段错误:11” 我想知道我做错了什么C 程序的意外终止,c,C,我是C语言的新手,正在使用scanf函数。我要求用户输入的数字是一个名为myNumber的长整数。但是,当我输入值时,程序给出“分段错误:11” 我想知道我做错了什么 long double ObtainNumber (/* you have no type name here */myNumber) 除非指定类型为myNumber,否则其类型假定为int。当您为%lf说明符将指向int的指针传递到scanf时,会得到未定义的行为 您需要将myNumber的类型指定为double long d
long double ObtainNumber (/* you have no type name here */myNumber)
除非指定类型为myNumber
,否则其类型假定为int
。当您为%lf
说明符将指向int
的指针传递到scanf
时,会得到未定义的行为
您需要将myNumber
的类型指定为double
long double ObtainNumber (double myNumber)
请注意,这不会让您将myNumber
的值传递回调用者:该值将在按值传递的参数中设置;一旦函数退出,它将被丢弃
如果需要从函数返回值,则需要传递一个指向myNumber
的指针:
long double ObtainNumber (double *myNumberPtr)
除非指定类型为myNumber
,否则其类型假定为int
。当您为%lf
说明符将指向int
的指针传递到scanf
时,会得到未定义的行为
您需要将myNumber
的类型指定为double
long double ObtainNumber (double myNumber)
请注意,这不会让您将myNumber
的值传递回调用者:该值将在按值传递的参数中设置;一旦函数退出,它将被丢弃
如果需要从函数返回值,则需要传递一个指向myNumber
的指针:
long double ObtainNumber (double *myNumberPtr)
您没有向函数声明
myNumber
参数的类型,因此假定它是int
。然后,您继续将它传递给一个scanf
,它期望它是一个double
,并且各种各样的坏事最终都会发生
在本例中,不清楚为什么myNumber
是一个参数——它肯定根本不影响函数的功能。您可能只是想将其声明为局部变量:
long double ObtainNumber(void)
{
long double myNumber;
scanf("%lf", &myNumber);
...
顺便说一句,
long double
不太可能是您真正想要的类型。这是一种时髦的扩展精度类型,它的大小可以根据您使用的体系结构、编译器和系统而有所不同。()很少使用,也没有必要double
更容易键入,并且更可能按照您期望的方式进行操作。您没有向函数声明myNumber
参数的类型,因此假定它是int
。然后,您继续将它传递给一个scanf
,它期望它是一个double
,并且各种各样的坏事最终都会发生
在本例中,不清楚为什么myNumber
是一个参数——它肯定根本不影响函数的功能。您可能只是想将其声明为局部变量:
long double ObtainNumber(void)
{
long double myNumber;
scanf("%lf", &myNumber);
...
顺便说一句,
long double
不太可能是您真正想要的类型。这是一种时髦的扩展精度类型,它的大小可以根据您使用的体系结构、编译器和系统而有所不同。()很少使用,也没有必要double
更容易键入,也更容易按照您期望的方式进行操作。我们需要知道myNumber的类型,以及代码的其余部分,至少是在该修补程序之后运行的部分。myNumber是如何定义的?我们需要知道myNumber的类型,以及代码的其余部分,至少在此修补程序之后运行的。myNumber是如何定义的?