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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© black747521 中级黑马   /  2015-11-6 23:57  /  722 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

//
//  main.c
//  测试题 3
//  3、 下面代码打印结果是__________(需要写上分析思路)
//  #include <stdio.h>
//  int main(int argc, const char * argv[])
//  {
//      int b;
//      int a = 5;
//      b = (++a) + (a++);
//   
//      printf("b=%d, a=%d\n", b, a);
//      return 0;
//  }
//  Created by black on 15/11/2.
//  Copyright © 2015年 black. All rights reserved.
//

#include <stdio.h>

int main(int argc, const char * argv[]) {
    /**
     *  分析思路:
     *  初始值 a = 5 ,b没有赋值
     *  因为括号的优先级是最高的 所以先算括号里面的++a和a++
     *  所以b = 6+6=12  a自增两次,所以a=7
     */
    printf("打印结果为:\n");
    printf("b=12,a=7\n");
    return 0;
}


1 个回复

倒序浏览
b=(++a)+(a++) ;  首先分析一下这行代码,  ++a 首先自增加1,变成6, 根据算术运算优先性,先算括号里面的表达式, 6+(a++)=6+6=12; 然后把a的值赋给B,此时B=12 , a的值为何等于7 ,因为表达式++a 此时为6, 然后后面表达式自增为1 为7
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马