黑马程序员技术交流社区

标题: 运算+法 怎么报错呢? [打印本页]

作者: lipeiaiwo    时间: 2014-7-10 00:15
标题: 运算+法 怎么报错呢?
我是看的视频里面的.你们看看哪里有错吗?
#include <stdio.h>

int main()
{
    int a = 10;
    int b;
    //b = a++;
    //b = ++a;
    b = (a++) + (++a);
   
    printf("b=%d\n",b);
   
    return 0;
}

报的错是:
02运算符.c:9:11: warning: multiple unsequenced modifications to 'a'
      [-Wunsequenced]
    b = (a++) + (++a);
              ^       ~~
什么情况呢?应该没错啊..
作者: Moebius    时间: 2014-7-10 00:41
这个只是警告,不是错误,应该可以运行
作者: fantacyleo    时间: 2014-7-10 01:07
本帖最后由 fantacyleo 于 2014-7-10 01:09 编辑

只是警告。语法没错。但是不要写这种代码。因为除了&&、||和逗号运算符以外,其他运算符的多个操作数之间的求值顺序是没有保证的,不同编译器可能给出不同的答案
作者: lipeiaiwo    时间: 2014-7-10 01:16
Moebius 发表于 2014-7-10 00:41
这个只是警告,不是错误,应该可以运行

是啊,可以运行..
作者: lipeiaiwo    时间: 2014-7-10 01:26
fantacyleo 发表于 2014-7-10 01:07
只是警告。语法没错。但是不要写这种代码。因为除了&&、||和逗号运算符以外,其他运算符的多个操作数之间的 ...

难道真是软件版本的问题?:(
作者: YKS    时间: 2014-7-10 05:23
写法问题,一般最好别这样写。还有,提个小问题,能直接说出最后a的值是多少吗,运算(a++)和(++a)的时候a分别是多少
作者: Medwyn    时间: 2014-7-10 09:18
YKS 发表于 2014-7-10 05:23
写法问题,一般最好别这样写。还有,提个小问题,能直接说出最后a的值是多少吗,运算(a++)和(++a)的时 ...

这两者a都进行了自加运算,所以前者的a为11,后者为12.a++整体的值是10,++a整体的值为12.
作者: 魇影    时间: 2014-7-10 10:23
b = (a++) + (++a);这种写法会发出警告,但是可以运行
作者: 幕夏    时间: 2014-7-10 10:24
我的没报错啊




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2