读书人

lt;C程序设计试题汇编(谭浩强)gt;8.35疑问

发布时间: 2012-02-04 15:43:09 作者: rapoo

<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

读书人网 >C++

热点推荐