计算机二级C语言。6.5怎么来的
发布网友
发布时间:2022-03-01 09:09
我来回答
共5个回答
热心网友
时间:2022-03-01 10:38
用预编译命令#define 定义常量并嵌套的话,系统是不会给你加“括号”的。比如:
#define a 40;
#define b 20;
#define c a+2;
#define d a*c;
其中,d应该是:d=40*40+2=162,而不是d=40*(40+2).
同理,你所给题目中,y=3*Q+2/2=8.5(已经用VC++6.0检测过,结果为8.5,检测程序如下:
#include"stdio.h"
#define Q 2.5
#define P Q+2
#define T 3*P
int main(void)
{float y=T/2;
printf("y=%f",y);
return 0;}
)
热心网友
时间:2022-03-01 11:56
编译器替换宏时是比较机械的:
Q+2先被替换成2.5+2这是P的定义,T的定义用P替换为3*2.5+2
y=T/2;最终被替换为y=3*2.5+2/2;用的值是8.5
热心网友
时间:2022-03-01 13:31
答案错了
y=3*2.5+2/2
y==8.5
热心网友
时间:2022-03-01 15:22
3*2.5+2/2 =8.5
答案应该是错的
热心网友
时间:2022-03-01 17:30
不知道是不是答案有误,我运行出来的结果是8.5.
y=t/2; // y=3*q+2 /2 ——> y=3*2.5+2/2