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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李闯 中级黑马   /  2015-5-20 22:36  /  1092 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

#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);//a=6,c=250
    if (c=(b==0))
        a=5;
    printf(”\t%d\t%d\n”,a,c);//5,1
    if (a=c=b) a=4;
    printf(”\t%d\t%d\n”,a,c);//0,0
}
输出结果为什么

5 个回复

倒序浏览
#include <stdio.h> // 系统自带的用<> int main() {     int a, b= 250, c;     // 这个是先把b的值赋值给c,那么c=250。那么表达式就是(250<0)不成立,所以不执行a = 4语句     if ((c=b)<0) a=4;     // 把0赋值给b,这个时候b=0,整个表达式为(0),所以不成立,不执行a = 5语句     else if ((b=0)) a=5;     // 因为if条件不成立,所以执行else后面的语句,所以a = 6     else a=6;     printf("\t%d\t%d\n",a,c);//a=6,c=250     // 先判断(b==0)表达式,从前面可知,b=0所以表达式的返回的结果是1,然后把这个1赋值给了c。 (只要注意;表达式就就两个结果,表达式成立,则等于1,表不成立,则等于0)     // 这个时候把表达式的的结果1赋值给c,这时c=1,再判断表达式(1)条件成立,所以执行a=5语句,那么a=5     if ((c=(b==0)))         a=5;     printf("\t%d\t%d\n",a,c);//a = 5,c = 1     // 赋值运算符是从右到左,因为b=0,所以c=0,a=0,条件(0)不成立,所以不执行a = 4     if ((a=c=b)) a=4;     printf("\t%d\t%d\n",a,c);//a = 0,c = 0     return 0; }
回复 使用道具 举报
#include <stdio.h> // 系统自带的用<>
int main()
{
    int a, b= 250, c;
    // 这个是先把b的值赋值给c,那么c=250。那么表达式就是(250<0)不成立,所以不执行a = 4语句
    if ((c=b)<0) a=4;
    // 把0赋值给b,这个时候b=0,整个表达式为(0),所以不成立,不执行a = 5语句
    else if ((b=0)) a=5;
    // 因为if条件不成立,所以执行else后面的语句,所以a = 6
    else a=6;
    printf("\t%d\t%d\n",a,c);//a=6,c=250
    // 先判断(b==0)表达式,从前面可知,b=0所以表达式的返回的结果是1,然后把这个1赋值给了c。 (只要注意;表达式就就两个结果,表达式成立,则等于1,表不成立,则等于0)
    // 这个时候把表达式的的结果1赋值给c,这时c=1,再判断表达式(1)条件成立,所以执行a=5语句,那么a=5
    if ((c=(b==0)))
        a=5;
    printf("\t%d\t%d\n",a,c);//a = 5,c = 1
    // 赋值运算符是从右到左,因为b=0,所以c=0,a=0,条件(0)不成立,所以不执行a = 4
    if ((a=c=b)) a=4;
    printf("\t%d\t%d\n",a,c);//a = 0,c = 0
    return 0;
}
回复 使用道具 举报
没看   赶紧写作业呢
回复 使用道具 举报
这里楼主注意哪里是赋值运算符 哪里是判断运算符估计就能看懂了
回复 使用道具 举报

大概就是这样了.

QQ20150521-1.jpg (193.17 KB, 下载次数: 13)

QQ20150521-1.jpg
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马