A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© lipeiaiwo 中级黑马   /  2014-7-10 00:15  /  1206 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我是看的视频里面的.你们看看哪里有错吗?
#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);
              ^       ~~
什么情况呢?应该没错啊..

8 个回复

倒序浏览
这个只是警告,不是错误,应该可以运行
回复 使用道具 举报
本帖最后由 fantacyleo 于 2014-7-10 01:09 编辑

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

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

难道真是软件版本的问题?:(
回复 使用道具 举报
写法问题,一般最好别这样写。还有,提个小问题,能直接说出最后a的值是多少吗,运算(a++)和(++a)的时候a分别是多少
回复 使用道具 举报
Medwyn 中级黑马 2014-7-10 09:18:58
7#
YKS 发表于 2014-7-10 05:23
写法问题,一般最好别这样写。还有,提个小问题,能直接说出最后a的值是多少吗,运算(a++)和(++a)的时 ...

这两者a都进行了自加运算,所以前者的a为11,后者为12.a++整体的值是10,++a整体的值为12.
回复 使用道具 举报
魇影 中级黑马 2014-7-10 10:23:14
8#
b = (a++) + (++a);这种写法会发出警告,但是可以运行
回复 使用道具 举报
幕夏 中级黑马 2014-7-10 10:24:02
9#
我的没报错啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马