免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: pmerofc
打印 上一主题 下一主题

[C] 《C解毒》征询意见帖 [复制链接]

论坛徽章:
2
技术图书徽章
日期:2013-09-04 15:21:51酉鸡
日期:2013-11-01 21:20:20
211 [报告]
发表于 2012-05-29 22:14 |只看该作者
回复 211# pmerofc

如果是写给人看的程序是可以忽悠的,写给计算机是无法忽悠的。这么多年来,我都是给计算机写程序。

那么到底是谁在忽悠呢?

   

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
212 [报告]
发表于 2012-05-29 23:11 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
213 [报告]
发表于 2012-05-30 09:20 |只看该作者
回复 213# pmerofc


    好的~~

光棍时回的哦~

论坛徽章:
11
未羊
日期:2013-12-16 12:45:4615-16赛季CBA联赛之青岛
日期:2016-04-11 19:17:4715-16赛季CBA联赛之广夏
日期:2016-04-06 16:34:012015亚冠之卡尔希纳萨夫
日期:2015-11-10 10:04:522015亚冠之大阪钢巴
日期:2015-07-30 18:29:402015亚冠之城南
日期:2015-06-15 17:56:392015亚冠之卡尔希纳萨夫
日期:2015-05-15 15:19:272015亚冠之山东鲁能
日期:2015-05-14 12:38:13金牛座
日期:2014-12-04 15:34:06子鼠
日期:2014-10-16 13:40:4715-16赛季CBA联赛之八一
日期:2016-07-22 09:41:40
214 [报告]
发表于 2012-05-30 09:59 |只看该作者
mirnshi 发表于 2012-05-29 22:14
回复 211# pmerofc

如果是写给人看的程序是可以忽悠的,写给计算机是无法忽悠的。这么多年来,我都是给 ...


其实我发觉专家一直在争取你的支持, 貌似现在发现争取失败了, 所以换策略了??

论坛徽章:
0
215 [报告]
发表于 2012-06-04 21:13 |只看该作者
回复 1# pmerofc


求指导。。。小弟还真就运行出个相同的。


comoon@demon:~/code/tmp$ ./priority
4
4
comoon@demon:~/code/tmp$ gcc --version
gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
Copyright (C) 2011 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


系统ubuntu12,编译器gcc,版本就是上面这个。。。结果就是两个4啊

   

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
216 [报告]
发表于 2012-06-04 21:25 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
217 [报告]
发表于 2012-06-04 21:59 |只看该作者
回复 217# pmerofc


    然而,如果你在机器上跑一下下面的代码的话

    #include <stdio.h>

    int main( void )
    {
      int i  ;
      
      printf(" %u \n" , sizeof (int *)     ) ;
      printf(" %u \n" , sizeof (int *) & i ) ;
      
      return 0;
    }

复制代码
你很可能会惊讶地发现,两者并不相同。如果发现两者相同说明你人品可能太好了(这事情很难遇到),这时你可以给i一个初值比如2,再试一次,最终你一定会发现两个貌似“应该”相同的值却根本不相同。

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
218 [报告]
发表于 2012-06-05 07:56 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
219 [报告]
发表于 2012-06-08 21:58 |只看该作者
回复 218# pmerofc

#include <stdio.h>

    int main( void )
    {
      int i = 0 ;
      
      printf(" %u \n" , sizeof (int *)     ) ;
      printf(" %u \n" , sizeof (int *) & i ) ;
      
      return 0;
    }
上面代码的结果:

    4
    0

#include <stdio.h>

    int main( void )
    {
      int i  ;
      int *p = &i;
      
      printf(" %u \n" , sizeof (int *)     ) ;
      printf(" %u \n" , sizeof (int *) p ) ;
      
      return 0;
    }
上面代码编译不通过:
comoon@demon:~/code/tmp$ gcc -o test3 test3.c
test3.c: In function ‘main’:
test3.c:9:40: error: expected ‘)’ before ‘p’


测试编译器:gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
系统:ubuntu12.04

因为我是新手,没完全读过c99标准,也对编译器不是灰常了解,不过我觉得像这种问题,应该把这个c代码对应的汇编研究下,很有帮助!虽然我没系统完全的学过汇编,不会照着手册也凑合看。。

下面是你第一段代码的汇编
        .file        "test2.c"
        .section        .rodata
.LC0:
        .string        " %u \n"
        .text
        .globl        main
        .type        main, @function
main:
.LFB0:
        .cfi_startproc
        pushl        %ebp
        .cfi_def_cfa_offset 8
        .cfi_offset 5, -8
        movl        %esp, %ebp
        .cfi_def_cfa_register 5
        andl        $-16, %esp
        subl        $32, %esp
        movl        $0, 28(%esp)
        movl        $.LC0, %eax
        movl        $4, 4(%esp)
        movl        %eax, (%esp)
        call        printf
        movl        28(%esp), %eax
        movl        %eax, %edx
        andl        $4, %edx
        movl        $.LC0, %eax
        movl        %edx, 4(%esp)
        movl        %eax, (%esp)
        call        printf
        movl        $0, %eax
        leave
        .cfi_restore 5
        .cfi_def_cfa 4, 4
        ret
        .cfi_endproc
.LFE0:
        .size        main, .-main
        .ident        "GCC: (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3"
        .section        .note.GNU-stack,"",@progbits

而且,编译器的具体实现也不一样。。。有必要也可以看下gcc的源码。。(太多,不适合我这种新手!)

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
220 [报告]
发表于 2012-06-08 22:21 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP