| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1547 人关注过本帖
标题:编译器的差别?高手一定要看看哦
只看楼主 加入收藏
名扬低调
Rank: 1
等 级:新手上路
帖 子:92
专家分:0
注 册:2008-10-12
结帖率:100%
收藏
 问题点数:0 回复次数:20 
编译器的差别?高手一定要看看哦
程序代码:
#include "stdio.h"
int main()
{     
    int i,j;
     j=0;
    for(i=0;i<10;i++)
    {
       j=j++;
    }
    printf("%d\n",j);
    j=0;
    for(i=0;i<10;++i)
    {
       j=j++;
    }
    printf("%d",j);
    return 0;
}

同样一段代码,在VC++6.0里j的值都是10,而在c-free4.1里却都是0,这是怎么回事?高手给解答一下!
再补充一点:我现在使用的C-Free的内置版本的MinGW是3.4.5版本,已经给升级过了!
搜索更多相关主题的帖子: 编译 
2008-11-10 10:49
永夜的极光
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:2721
专家分:1
注 册:2007-10-9
收藏
得分:0 
j=j++;
这是未定义的语法,所以结果不管是10还是0都是正确的

从BFS(Breadth First Study)到DFS(Depth First Study)
2008-11-10 11:08
dayan_z
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-11-4
收藏
得分:0 
?
说明白点行不?
2008-11-10 13:38
hokers
Rank: 1
等 级:新手上路
威 望:1
帖 子:102
专家分:0
注 册:2008-11-9
收藏
得分:0 
复合语句问题?
2008-11-10 13:53
名扬低调
Rank: 1
等 级:新手上路
帖 子:92
专家分:0
注 册:2008-10-12
收藏
得分:0 
还是不太明白,望版主能详细说明一下

无声的坚持或许沉默也是一种执着.!  By:名扬低调
变量的指针和指向变量的指针变量.!
2008-11-10 14:53
scheelite
Rank: 1
等 级:新手上路
帖 子:45
专家分:0
注 册:2008-11-5
收藏
得分:0 
没意义
2008-11-10 15:02
永夜的极光
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:2721
专家分:1
注 册:2007-10-9
收藏
得分:0 
是这样的
j = 0;
j = j++;
在C语言中,并没有规定在这种情况下,编译器应该怎么处理,所以编译器可能有两种处理方法
1.
先用一个临时变量,我们假设为i,先赋值i = j++; 现在i=0,j=1,然后赋值j = i;所以j = 0
这样你无论多少次循环,结果都是0
2.
不用临时变量,先是j=j,现在j=0,然后执行j++,现在j=1,
所以执行10次后,j=10

所以呢,我说,无论结果是10还是0,那都是正确的

从BFS(Breadth First Study)到DFS(Depth First Study)
2008-11-10 17:32
hokers
Rank: 1
等 级:新手上路
威 望:1
帖 子:102
专家分:0
注 册:2008-11-9
收藏
得分:0 
第二种好理解,第一种为什么要用临时变量,不是已经给J地址拉么,而且赋拉0.另外如果是第一种,那么循环10次是不是需要10个临时变量.
2008-11-10 17:43
永夜的极光
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:2721
专家分:1
注 册:2007-10-9
收藏
得分:0 
我那样说只是为了便于理解,其实不是用临时变量,而是用一个临时的寄存器,如果你学过汇编的话就知道了

从BFS(Breadth First Study)到DFS(Depth First Study)
2008-11-10 17:52
hokers
Rank: 1
等 级:新手上路
威 望:1
帖 子:102
专家分:0
注 册:2008-11-9
收藏
得分:0 
刚刚也有想到过你说的临时变量是reg,以此提高速度,不过难道每次 reg=j++都是赋0吗,要不怎么会是0,c-free4.1的编译器真怪.
2008-11-10 18:04
快速回复:编译器的差别?高手一定要看看哦
数据加载中...
 
   



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

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