<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
#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 可能跟编译器有关吧
}
#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