<C程序设计试题汇编(谭浩强)>8.35疑问
#define T(x,y,r) x*r*y/4
main()
{//原题有改动,数值是一样的.
int a=3,b=3,c=5,s;
s=T(a++,a*++b,a+b+c);
printf("%d",s);
}
我的计算过程是这样:
s=3*3+3+5*3*4/4=9+3+15=27
为什么结果是28?
------解决方案--------------------你用什么编译器啊
我运行怎么是27 啊(vc6.0)
------解决方案--------------------lz的理解是正确的 我忽略了y和r的顺序
------解决方案--------------------#define T(x,y,r) x*r*y/4
谁做项目时这样写,会被 抽巴掌的.
------解决方案--------------------我觉得这个题目会有争议
我把楼主的程序在vc6.0上运行得到的是 结果是 27
C/C++ code
#include <iostream>
using namespace std;
#define T(x,y,r) x*r*y/4
main()
{
int a=3,b=3,c=5,s;
s=T(a++,a*++b,a+b+c);
printf("%d",s); //s=3*3+3+5*3*4/4;//其中在计算r时 b=3没有等于4 可能跟编译器有关吧
}
告诉楼主像这样的题目只要把
x用a++
r用a+b+c
y用a*++b
带进去就可以了 记住别随意加()
楼主还可以执行这个程序看看有什么区别
C/C++ code
#include <iostream>
using namespace std;
#define T(x,y,r) (x)*(r)*(y)/4
main()
{//原题有改动,数值是一样的.
int a=3,b=3,c=5,s;
s=T(a++,a*++b,a+b+c);
printf("%d",s);
}
------解决方案--------------------
结果是 28的同志们
你们使用什么编译的啊
怎么就我一个人是 27
难道就没有人用 vc6.0吗?
------解决方案--------------------
tc3,tc2也是 27啊。
------解决方案--------------------
Turbo c/c++ 3.0 是28