| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1291 人关注过本帖
标题:求助一个关于宏定义的题目
只看楼主 加入收藏
qzy051203055
Rank: 1
等 级:新手上路
帖 子:45
专家分:0
注 册:2007-8-24
收藏
得分:0 
回复 8楼 roar
恩。这个明白 谢谢。

just do it~~~~~
2010-06-27 20:24
qzy051203055
Rank: 1
等 级:新手上路
帖 子:45
专家分:0
注 册:2007-8-24
收藏
得分:0 
回复 6楼 xichong
我刚刚自己琢磨了下,自己把题目变形了下,发现有下面问题,麻烦帮忙看看。
#include <stdio.h>
void main()
{
    int i=5;
    printf("A=%d\n",((i++)*(i++)*(i++)));  //answer=5*5*5=125
}
void main()
{
    int i=5;
    printf("B=%d\n",((++i)*(++i)*(++i)));//answer=7*7*8=392 这个答案有点诡异????
 }
void main()
{
    int i=5;
    printf("C=%d\n",((++i)*(++i)*(i++)));//answer=7*7*7=343
}
void main()
{
    int i=5;
    printf("D=%d\n",((++i)*(i++)*(i++)));//answer=6*6*6=216
}
void main()
{
    int i=5;
    printf("E=%d\n",((++i)*(i++)*(++i)));//answer=6*6*7=252
}
void main()
{
    int i=5;
    printf("G=%d\n",((i++)*(i++)*(++i)));//answer=5*5*6=150
}

just do it~~~~~
2010-06-27 20:33
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
回复 10楼 qzy051203055
要是有人这样考我,我就反过来问他:这道题我不会,你说是多少?

我就是真命天子,顺我者生,逆我者死!
2010-06-27 20:52
方廷
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:47
专家分:176
注 册:2010-6-9
收藏
得分:3 
我举例子来说明这种算法;
如:
#include<stdio.h>
void main()
{
    int i=2;
    printf("a=%d\n",(i--)*(++i)*(--i)*(++i)*(i--)*(++i));
    printf("i=%d\n",i);
}
其中(i--)*(++i)*(--i)*(++i)*(i--)*(++i)是从左到右运算;
后一个变量的自加或自减是由前一表达式的值决定;
如:执行i--后表达式的值为2;
    执行++i后表达式的值为3;
    执行--i后表达式的值为2;
    执行++i后表达式的值为3;
    执行i--后表达式的值为3;
    执行++i后表达式的值为4;
但有一点不同的是第一个表达式的值和第二个表达式的值相同;
a=3*3*2*3*3*4=648;
从运算的结果看出第一个表达式的值不是2而是3;
但i的值不受表达式影响;
所以:i=2-1+1-1+1-1+1=2;



2010-06-27 22:29
aitajiujiage
Rank: 2
等 级:论坛游民
帖 子:21
专家分:34
注 册:2010-5-10
收藏
得分:0 
我在TC 20中试过了结果是42啊
可能是不同的编译环境导致结果不同的吧
2010-06-27 23:03
快速回复:求助一个关于宏定义的题目
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.080022 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved