我有一个有两个双精度输入的代码,然后我想把它转换成两个整数我认为这要么是解引用的问题,要么是我的强制转换语法关闭了提前谢谢
#include <stdio.h>
int main()
{
double * int1;
double * int2;
printf("Put in two numbers:");
scanf("%lf", int1);
scanf("%lf", int2);
int a = (int) (int1);
int b = (int) (int2);
printf("%d\n%d", a, b);
}
最佳答案
正如我所见,您可以通过两种方式来完成这项工作:一种是在堆中使用指针和动态内存,另一种是使用自动值。
具有动态分配内存的指针
#include <stdio.h>
#include <stdlib.h>
int main()
{
double * int1 = malloc(sizeof(double));
double * int2 = malloc(sizeof(double));
printf("Put in two numbers:");
scanf("%lf", int1);
scanf("%lf", int2);
int a = (int) *int1;
int b = (int) *int2;
printf("%d\n%d", a, b);
free(int1);
free(int2);
}
在系统堆栈上分配的自动值
#include <stdio.h>
int main()
{
double int1;
double int2;
printf("Put in two numbers:");
scanf("%lf", &int1);
scanf("%lf", &int2);
int a = (int) int1;
int b = (int) int2;
printf("%d\n%d", a, b);
}
注意:在您的示例中,指针的使用方式存在一个问题,即它们指向的内存不存在,而且我相信scanf不会为指针分配内存。