sjfb.net
当前位置:首页 >> 以下程序输出的结果是: #DEFinE pt 5.5 #DEFinE s(... >>

以下程序输出的结果是: #DEFinE pt 5.5 #DEFinE s(...

你的程序不完整。

#define PT 5.5 就是把PT直接换成5.5然后再编译。 main() { int a=1,b=2; printf("%4.1f\n",S(a+b)) S(a+b)就是 PT*a+b*a+b = 5.5*a+b*a+b = 5.5+2+2 = 9.5

#define PT 3.5; #define S(X) PT*X*X; main() { int a=1,b=2; printf("%4.1f\n",S(a+b)) } S(a+b)就是 PT*a+b*a+b = 3.5*a+b*a+b = 3.5*1+2*1+2= 7.5 你写的#define S(x) PT*X*X; 中,S(x) 要改成与后面 的大写 X一致啊

答案选C。 原因:代入a=1,b=1,PT=3.5后,S(a+b)为(3.5*1+2*1+2)=7.5 。 易错点:一般会容易以为答案是A,因为会被S(a+b)误导,认为是a,b相加后再与3.5相乘,即3.5*(1+2)*(1+2)=31.5 ,这个是错误的。所以我们要仔细看S(x)的宏定义,是PT...

#define PT 3.5 #define s(x) Pt*x*x -- 这里的 Pt 应当 是 PT 才对,否则 Pt 无值。 printf(“%f\n”,s(a+b)) ; -- 宏里的 x 用 a+b 替代 即可。 s(a+b) 把 a+b 看成 x , s(x) 是 PT*x*x ,替代 成 PT*a+b*a+b, PT 用第一个 宏 定义里的 3.5 替...

因为宏定义#define语句属于编译预处理,它不属于c语言语句。c语言规定每一条语句后面要加上分号,但编译预处理不是c语言语句,所以不必遵守此规定。

代码中间有汉字字符。 最简单的方式就是全部重新敲一遍。 另外, printf打错了。 其他的没什么问题。 PS 如果你是想联系, 那么这样写可以。 如果想得到正确结果 需要 #define S(x) PT*(x)*(x)

很少有这样定义的。 define是宏定义,定义后 P等效于3.5; 注意这里有一个分号。 一般不这样做。 否则 比如 m=P+3; 就会被翻译成 m=3.5;+3; 导致编译错误。 更常见的是 #define P 3.5 不加结尾分号。

宏定义后边不能有 ; #include #define PT 3.5 #defineS(x) PT*x*x main() { int a=1,b=2;printf("%4.1f\n",S(a+b)); }

执行时不报错 内存可访问 但访问的内容不对; 选择y或n 状况相同 可能是你的判断语句有问题 你仔细检查下

网站首页 | 网站地图
All rights reserved Powered by www.sjfb.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com