| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1460 人关注过本帖
标题:请问结果是多少?为什么这样?
只看楼主 加入收藏
编程弱者
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:35
专家分:103
注 册:2011-11-17
收藏
得分:0 
支持10楼
不过看下这段代码#include<stdio.h>

int main(void)
{
   int i=3,k,a,b,c;
   //k=(i++)+(++i)+(i++);
   a=i++;
   b=++i;
   c=i++;
   k=a+b+c;
   printf("a=%d,b=%d,c=%d\n",a,b,c);
   printf("i=%d,k=%d",i,k);
   return(0);
}结果是a=3,b=5,c=5;
i=6,k=13;



#include<stdio.h>

int main(void)
{
   int i=3,k;//a,b,c;
   k=(i++)+(++i)+(i++);
   /*a=i++;
   b=++i;
   c=i++;
   k=a+b+c;
   printf("a=%d,b=%d,c=%d\n",a,b,c);*/
   printf("i=%d,k=%d",i,k);
   return(0);
}
i=6;k=12;
为什么这两个k的结果不同呢?


[ 本帖最后由 编程弱者 于 2011-11-21 13:36 编辑 ]
2011-11-21 13:19
weihui910728
Rank: 2
等 级:论坛游民
帖 子:14
专家分:12
注 册:2011-11-20
收藏
得分:0 
这就是看运算符的优先级了   先是把()里的算完(执行完)再到外面的+号再到=号
2011-11-21 16:17
南山小人物
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2011-9-18
收藏
得分:0 
正确的程序应该是
#include<stdio.h>    //这么漏掉了#
void main()
{
   int i=3,k;
   k=(i++)+(++i)+(i++);
   printf("%d%d",i,k);  
}

程序输出的答案是612 (注意这里i的值是等于6,k的值是等于3+4+5=12)

希望能帮到你解答疑惑~
2011-11-21 16:33
lovely_ones
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2011-8-1
收藏
得分:0 
i=1,i++式子的值等于1,i=2
++i式子的值等于2,还是i=2
2011-11-21 16:37
id3663423
Rank: 2
来 自:浙江
等 级:论坛游民
帖 子:48
专家分:63
注 册:2009-4-15
收藏
得分:0 
以下是引用南山小人物在21-11-2011 16:33:20的发言:

正确的程序应该是
#include    //这么漏掉了#
void main()
{
   int i=3,k;
   k=(i++)+(++i)+(i++);
   printf("%d%d",i,k);   
}
 
程序输出的答案是612 (注意这里i的值是等于6,k的值是等于3+4+5=12)
 
希望能帮到你解答疑惑~
支持这个3+4+5=12;void main可以不要用了...int main (void)去看一下关于这个的帖子

每多学一点知识,就少写一行代码.
2011-11-21 16:43
id3663423
Rank: 2
来 自:浙江
等 级:论坛游民
帖 子:48
专家分:63
注 册:2009-4-15
收藏
得分:0 
#include<stdio.h>
#include<conio.h>
int main()
{
    int i=3,k,x,y,z;
    k=(x=i++)+(y=++i)+(z=i++);
    printf("%d%d\n",i,k);  
    printf("%d %d %d",x,y,z);
    getch();
    return 0;   
}
这里的输出是613 3 5 5,因为我这里x,y,z都是进行了赋值所以在++i中大了1,所以按照原式应该是612 3+4+5=12,碰到问题总得解决,别消极,路长着呢

每多学一点知识,就少写一行代码.
2011-11-21 16:52
瑾凡
Rank: 2
来 自:湖北武汉
等 级:论坛游民
帖 子:19
专家分:12
注 册:2010-9-13
收藏
得分:0 
原来是要先运算括号的,,了解
2011-11-21 16:54
lovely_ones
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2011-8-1
收藏
得分:0 
i=3 ,第一次:i++式子的值为3,i=4
      第二次:++i式子的值为5,i=5
      第三次:i++式子的值为5,i=6
所以i=6,k=13
2011-11-21 17:13
huangwei1329
Rank: 2
等 级:论坛游民
帖 子:27
专家分:13
注 册:2011-10-18
收藏
得分:0 
没看懂   为什么k=12 和i=6
2011-11-21 17:43
id3663423
Rank: 2
来 自:浙江
等 级:论坛游民
帖 子:48
专家分:63
注 册:2009-4-15
收藏
得分:0 
其实主要看你要用到那个值,是表达式i++,还是i本身的值,要平时少出错就尽量使用++i,这样表达式和i的值是一样的.

每多学一点知识,就少写一行代码.
2011-11-21 20:57
快速回复:请问结果是多少?为什么这样?
数据加载中...
 
   



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

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