| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 687 人关注过本帖
标题:c语言问题
只看楼主 加入收藏
紫巅之草
Rank: 1
来 自:甘肃武威
等 级:新手上路
帖 子:1
专家分:0
注 册:2011-8-28
结帖率:0
收藏
已结贴  问题点数:20 回复次数:9 
c语言问题
当x=1 (++x)+(++x)+(++x)怎么算这个表达式的值啊????????????
搜索更多相关主题的帖子: c语言 
2011-08-28 11:10
QQ346957135
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:148
专家分:658
注 册:2011-8-9
收藏
得分:3 
从左向右依次进行,x初值为1,经过三个自加变为4。
注:++x意为x=x+1;

A real warrior never quits.
2011-08-28 15:37
pauljames
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:千里冰封
威 望:9
帖 子:1555
专家分:10000
注 册:2011-5-8
收藏
得分:3 
先增值,后引用。但是结果有点奇怪。我在gcc下面编译输出如下:
#include <stdio.h>
int main(void)
{
    int x=1,x1,x2,x3,y1=0,y2=0;
    x1=++x;
    x2=++x;
    x3=++x;
    x=1;
    y1=(++x)+(++x)+(++x);
    y2=x1+x2+x3;
    printf("(++x)+(++x)+(++x)=%d\n",(++x)+(++x)+(++x));
    return 0;
}
x = 4
x1 = 2
x2 = 3
x3 = 4
y1 = 10
y2 = 9


经常不在线不能及时回复短消息,如有c/单片机/运动控制/数据采集等方面的项目难题可加qq1921826084。
2011-08-28 19:26
liu1028
Rank: 1
等 级:新手上路
帖 子:1
专家分:2
注 册:2011-6-18
收藏
得分:3 
先括号里,后依次运算。
#include <stdio.h>
int main
{
    int x=1,p;
    p=(++x)+(++x)+(++x);
    printf("(%d\n",p);
    return 0;
}
2011-08-28 22:32
怎么会这样子
Rank: 2
来 自:广州
等 级:论坛游民
帖 子:31
专家分:39
注 册:2011-8-20
收藏
得分:3 
回复 3楼 pauljames
y1为什么是10呢?不是9?
2011-08-29 09:32
Hujc71
Rank: 2
等 级:论坛游民
帖 子:49
专家分:65
注 册:2010-3-31
收藏
得分:3 
我很郁闷的是明明程序只有一个输出,你怎么能控制x = 4
x1 = 2
x2 = 3
x3 = 4
y1 = 10
y2 = 9这么多的输出?
2011-08-30 16:20
statics
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:163
专家分:625
注 册:2011-8-29
收藏
得分:3 
编译器不同结果就不同啊,vc上结果:
int x=1,y=0;
y =(++x)+(++x)+(++x);
可以理解为这样执行的:
int x=1,a=0,b=0,c=0,y=0;
a = a+1;//2=>第一个++x
b = a+1;//3=>第二个++x
y = b+b;//6=>y =(++x)+(++x)
c = b+1;//4=>第三个++x
y = y+c;//y=b+b+c;//10=>y =(++x)+(++x)+(++x);


[ 本帖最后由 statics 于 2011-8-31 11:15 编辑 ]

惟我独行...
2011-08-31 11:12
laznrbfe
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:482
专家分:1599
注 册:2011-5-22
收藏
得分:3 
注意‘+’加号是双目运算
程序代码:
#include <stdio.h>
int main(void)
{
    int x,y1=0,y2=0;
    x=1;
    y1=(++x)+(++x);
    printf("x=%d,y1=(++x)+(++x)=%d\n\n",x,y1);
   
    x=1;
    y2=(++x)+(++x)+(++x);
    printf("x=%d,y2=(++x)+(++x)+(++x)=%d\n\n",x,y2);
    return 0;
}
x=3,y1=(++x)+(++x)=6
x=4,y1=(++x)+(++x)+(++x)=10


7楼讲得不错。
2011-09-02 00:16
lpvoid
Rank: 1
等 级:新手上路
帖 子:4
专家分:2
注 册:2011-9-2
收藏
得分:3 
的确编译器不同结果就不同吧
2011-09-02 20:50
快速回复:c语言问题
数据加载中...
 
   



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

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