zoukankan      html  css  js  c++  java
  • c语言在windows下和Mac下的不同表现!

    最近给一个等级考试的C语言培训班上课,学生问起一些++的问题。让我好生为难。因为这些不同的编译器处理方式,在不同的系统下表现并不一致。

    不管你洋洋洒洒论述多么一大篇,在事实面前就一下显得苍白了。虽然这样的代码在工程中是不提倡的,但是考试又不得不面对。

    例1:

    a=1;
    b=++a+++a+++a;

    问,执行完之后,b和a的值是多少?

    首先,上面第二个表达式,在WINDOWS下是无法通过编译的,会报告a+++a这样的表达式 lvalue required as increment operand

    在Mac下也无法通过编译,报告的错误是: Expression is not assignable

    需要修改为:b=++a+(++a)+(++a);

    在WINDOWS下,VC6中,包括mingw32-gcc.exe(GCC)中,运算的结果是10,4。

    但是在Mac中,运算的结果是:9,4。

    原因是在windows 下,总是先算++a+(++a),而且是先递增两次a,变成3,然后再算两个3之和为6,然后再算+(++a)的值,加上4,于是得到10.

    而mac 下似乎更符合我们对C的认知,是先执行2+3+4=9;

    例2:

    a=1;
    b=a+++a+++a++;

    执行结果也不同,windows下结果是3,4;

    mac下是6,4;

  • 相关阅读:
    Scala学习笔记
    flume ng 1.3 安装(转)
    学习scala trait
    scala性能测试
    scala容器使用
    hdu 4607 Park Visit
    FZU 1591 Coral的烦恼
    fzu 1675 The Seventy-seven Problem
    hdu 4602 Partition
    zoj 1842 Prime Distance
  • 原文地址:https://www.cnblogs.com/softman11/p/3368162.html
Copyright © 2011-2022 走看看