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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© fengcommon 中级黑马   /  2015-11-23 23:54  /  2410 人查看  /  25 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

#include <stdio.h>
int 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))//c=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)

求详细解答步骤

25 个回复

倒序浏览
    int a, b= 250, c;
    if ((c=b)<0) a=4; 这句首先执行c=b这个表达式,然后c = 250,表达式(c = b)的值为250 不小于0 不行执行a=4
    else if (b=0) a=5; 这里的时候b = 250,不等于0 不执行a = 5;
    else a=6; 然后执行这句话  所以到这里 a = 6 b = 250 c=250
    printf(”\t%d\t%d\n”,a,c); 打印 6 250
    if (c=(b==0))//c=0 先执行表达式(b == 0),显然这个表达式不成立,所以表达式的值为0  然后赋值给c,所以c= 0.
        a=5; 然后执行这句话,虽然c = 0 但是他不是判断语句,他是赋值语句,所以肯定执行这句话,然后a = 5
    printf(”\t%d\t%d\n”,a,c);   然后打印 5 0
    if (a=c=b) a=4; 这里b还是250  执行这句话  a = 250  c = 250  b = 250
    printf(”\t%d\t%d\n”,a,c)  打印 250  250

没有执行过程序,就看出来的,希望可以帮到你,有问题也可以去我的帖子中提问,会为你解答的
回复 使用道具 举报
2楼威武,楼主编译一下嘛,2楼讲的相当明显了
回复 使用道具 举报 0 1
正在输入中... 发表于 2015-11-24 00:10
int a, b= 250, c;
    if ((c=b)

牛啊,非常感谢,我会经常去你那逛的,碰到不会的就问你
回复 使用道具 举报
支持2楼   
回复 使用道具 举报
正在输入中... 发表于 2015-11-24 00:10
int a, b= 250, c;
    if ((c=b)

二楼讲的很清楚,对于if分支结构要多看看,其实if分支结构不难
回复 使用道具 举报
跑堂,,进来看看
回复 使用道具 举报
二楼好评
回复 使用道具 举报
还不够 来自手机 中级黑马 2015-11-25 21:09:19
9#
……………………………………
回复 使用道具 举报
huh 中级黑马 2015-11-25 21:41:17
10#
int a,b =250,c;
回复 使用道具 举报
huh 中级黑马 2015-11-25 21:59:26
11#
2楼的答案是错误得!正确答案:是这样得
回复 使用道具 举报
2楼的答案是错误得!正确答案:是这样得
回复 使用道具 举报
huh 中级黑马 2015-11-25 22:02:19
13#
正确结果:        6        250         5        1         0        0  详细解答步骤 :int a, b= 250, c; //声明,并初始化b=250;         if ((c=b)<0) a=4; //c=250,b=250,c大于0,不执行a=4语句!         else if (b=0) a=5;//将0赋值给b,b=0,if(0)不执行a=5语句         else a=6;//a =6         printf("\t%d\t%d\n",a,c);//a=6,c=250              if (c=(b==0))//因为b是0,表达式b==0成立,返回值1,c=1,赋值语句!if(1),执行a=5;             a=5;         printf("\t%d\t%d\n",a,c);// a = 5,c=1         if (a=c=b)//5=1=0,顺序从左到右:if(0)                 a=4;//不执行         printf("\t%d\t%d\n",a,c);//0,0
回复 使用道具 举报
huh 中级黑马 2015-11-25 22:10:42
14#
正确结果:
6        250        
5        1      
0        0
详细解答步骤:
int a, b= 250, c; //声明,并初始化b=250;
if ((c=b)<0) a=4; //c=250,b=250,c大于0,不执行a=4语句!  
else if (b=0) a=5;//将0赋值给b,b=0,if(0)不执行a=5语句!
else a=6;//有执行这语句:a =6         
printf("\t%d\t%d\n",a,c);//6    250   
if (c=(b==0))//因为b是0,表达式b==0成立,返回值1,c=1,赋值语句!if(1),执行a=5;
a=5;         
printf("\t%d\t%d\n",a,c);// 5     1        
if (a=c=b)//5=1=0,顺序从左到右,结果:a=0,c=0,b=0, if(0)
a=4;//不执行         
printf("\t%d\t%d\n",a,c);//0    0
回复 使用道具 举报
可以。。。路过,,被吸引
回复 使用道具 举报
昨晚眼花,把这句else if (b=0) a=5; 看成了else if (b==0) a=5;造成答案错误,不好意思,现在更正答案:
int a, b= 250, c;
    if ((c=b)<0) a=4; 这句首先执行c=b这个表达式,然后c = 250,表达式(c = b)的值为250 不小于0 不行执行a=4
    else if (b=0) a=5; 注意这里是赋值语句,b = 0;所以b的值为0,表达式(b=0)值为真,所以执行a=5
    else a=6; 既然执行了上面那句话,那么这句不执行
    printf(”\t%d\t%d\n”,a,c); 所以到这里a = 5 b = 0 c = 250,打印结果:5    250
    if (c=(b==0))//c=0 先执行表达式(b == 0),显然这个表达式成立,所以表达式的值为1  然后赋值给c,所以          c= 1. 同样这句的if条件的表达式还是个赋值语句,所以执行a = 5.
        a=5; 然后执行这句话,到这里a = 5, b = 0, c = 1
    printf(”\t%d\t%d\n”,a,c);   然后打印 5 1
    if (a=c=b) a=4; if的条件句表示,b复制给c 然后在赋值给a ,所以a =0, b = 0, c = 0;if的条件表达式的值,就是a的值,就是0,所以不执行a=4.到这里a、b、c、全是0
    printf(”\t%d\t%d\n”,a,c)  打印 0 0
回复 使用道具 举报
看到各位详细解答,谢谢了,我今天已经运行出来了,是你们的答案。
回复 使用道具 举报
正在输入中... 发表于 2015-11-26 00:11
昨晚眼花,把这句else if (b=0) a=5; 看成了else if (b==0) a=5;造成答案错误,不好意思,现在更正答案:
...

还是要感谢你啊,我今天回来还想和你说一下的,没想到你发现了问题就直接立刻回我了,非常感谢
回复 使用道具 举报
代码还是在编译器里搞一搞,,,
回复 使用道具 举报
厉害
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马