#include <stdio.h>
#include <stdlib.h>
#define x 1
#if(x==1)
#define TYPE float
#else
#define TYPE double
#endif
void main()
{
printf("x=%d\n",sizeof(TYPE));
}
我希望x的值从从电脑屏幕输入或者从控制文件读入,怎么修改上面的程序呢?谢谢大家啦!
你好,我想实现这样一个功能。用一个参数来控制程序是采用单精度计算还是双精度计算,而这个参数是用户来选择的,即通过文本文件来控制。不知道您有什么好办法没有,谢啦!
追答足健堂敏斯特正品&足部健康诚:
如果用户是通过修改文本文件来控制的话,对于预编译控制,无论如何设置,最终都得从新编译,针对这种情况,其实可以尝试下用联合体union。
您能写一小段程序吗?谢啦
追答#include
#include
void main()
{
int x;
union TYPE{
float d1;
double d2;
}
TYPE data;
scanf("%d",&x);
printf("x=%d\n",sizeof(data));
if(x==1)
printf("x=%d\n",sizeof(data.d1));
else
printf("x=%d\n",sizeof(data.d2));}
}
试试吧,我也不确定。。
error C2146: syntax error : missing ';' before identifier 'data';error C2065: 'data' : undeclared
追答足部健康诚:加个分号,在union定义的后面。。
追问程序编译通过了。再请问下。我在程序里面怎么定义变量或者数组啊?比如说以前是double a, b;
现在怎么定义a,b
定义type a, b
本回答被网友采纳好像这样不行,无论x输入什么都是double型
追答你把printf里面改了啊,直接把sizeof(TYPE)赋值给x了,输出当然是8了
追问你用 程序编译下,看结果对吗?我这边始终不对。谢啦
追答我这边没有工具,只是大致和你说了下思路,你慢慢调试下,我估计是你程序哪里写错了