黑马程序员技术交流社区
标题:
这题把我看醉了,求解脱
[打印本页]
作者:
李闯
时间:
2015-5-20 22:36
标题:
这题把我看醉了,求解脱
#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
}
输出结果为什么
作者:
星空眼泪
时间:
2015-5-20 23:23
#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; }
作者:
星空眼泪
时间:
2015-5-20 23:24
#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;
}
作者:
649678291
时间:
2015-5-20 23:25
没看 赶紧写作业呢
作者:
hehelaicaicai
时间:
2015-5-21 07:11
这里楼主注意哪里是赋值运算符 哪里是判断运算符估计就能看懂了
作者:
x331275955
时间:
2015-5-21 21:42
大概就是这样了.
QQ20150521-1.jpg
(193.17 KB, 下载次数: 24)
下载附件
2015-5-21 21:40 上传
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2