c语言在windows下和Mac下的不一样表现!

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

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

例1:rem

a=1;
b=++a+++a+++a;编译器

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

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

在Mac下也没法经过编译,报告的错误是: Expression is not assignablerequire

须要修改成:b=++a+(++a)+(++a);gcc

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

可是在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;

相关文章
相关标签/搜索