c语言 #define的用法

#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的值从从电脑屏幕输入或者从控制文件读入,怎么修改上面的程序呢?谢谢大家啦!

第1个回答  2014-03-02
足健堂敏斯特正品店的足部健康诚:

这个貌似做不到,#define是预处理的,优先于键盘或文件输入。不知道你这个是用来干什么的,仅就功能来看,可以直接用x来控制输出,没必要用预处理指令。
如果非得用,就在另一个头文件中,#define x,然后在你上面的文件中,#include该文件,然后#ifndef 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

本回答被网友采纳
第2个回答  2014-03-02
#define x 1 改为 int x=0,声明为全局变量
然后main函数中
printf:(”清输入x:\n);
scanf(“%d”,&x) ;追问

好像这样不行,无论x输入什么都是double型

追答

你把printf里面改了啊,直接把sizeof(TYPE)赋值给x了,输出当然是8了

追问

你用 程序编译下,看结果对吗?我这边始终不对。谢啦

追答

我这边没有工具,只是大致和你说了下思路,你慢慢调试下,我估计是你程序哪里写错了

第3个回答  2014-03-02
#if(x==1) C语言有这样写法吗???
另外,你说X值从屏幕输入不可以的,因为你就没定义怎么可能接收外部值,把你的逻辑想清楚.
相似回答