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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始


#include ”stdio.h”
main()
{
    int a, b= 250, c;
    if ((c=b)<0) a=4;
    else if (b=0) a=5;
    else a=6;   
    printf(”\t%d\t%d\n”,a,c);
    if (c=(b==0))
        a=5;
    printf(”\t%d\t%d\n”,a,c);
    if (a=c=b) a=4;
    printf( ”\t%d\t%d\n”,a,c);}
结果为下面
6   250
5   1
0   0




后面的两组5 1,    0 0怎么分析出来的?

6 个回复

正序浏览
neobug 中级黑马 2015-7-17 11:43:42
7#
原来如此!!!
回复 使用道具 举报
思密达。。。。。
回复 使用道具 举报
flymanshow 来自手机 中级黑马 2015-7-16 21:47:42
报纸
爱楚楚 发表于 2015-7-16 21:37
因为 else if(b=0)虽然不成立,但是已经把0赋值给b,所以b的值为0,后面的就很容易分析了 ...

嗯嗯谢谢
回复 使用道具 举报
flymanshow 来自手机 中级黑马 2015-7-16 21:46:31
板凳
丁丙乙甲 发表于 2015-7-16 21:30

谢谢   分析的很好   明白了
回复 使用道具 举报
因为 else if(b=0)虽然不成立,但是已经把0赋值给b,所以b的值为0,后面的就很容易分析了
回复 使用道具 举报
  1. #include ”stdio.h”
  2. main()
  3. {
  4.     int a, b= 250, c;        
  5.     if ((c=b)<0) a=4;   .. ……….执行c=b,c=250,且条件 if(0)为假,则不执行if后边的语句;
  6.     else if (b=0) a=5;…………….执行b=0,因此 if(0),所以则不执行if后边的语句;
  7.     else a=6;   ………………………,执行a=6;
  8.     printf(”\t%d\t%d\n”,a,c);…………所以a=6,b=0,c=250;
  9.     if (c=(b==0))…….........…执行(b==0)为真,所以c=1,if(1)为真,执行if后边的语句a=5;
  10.         a=5;
  11.     printf(”\t%d\t%d\n”,a,c);……所以,a=5,b=0,c=1;
  12.     if (a=c=b) a=4; …………执行a=c=b语句,从右往左计算等价于a=(c=b),所以a=b=c=0;
  13.     printf( ”\t%d\t%d\n”,a,c);}
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马