当前位置: 代码迷 >> C语言 >> 奇怪,不解!
  详细解决方案

奇怪,不解!

热度:417   发布时间:2005-03-29 22:43:00.0
奇怪,不解!
我是个C语言新手,一些基本语言还没学完,在学习中遇到了一些不解的问题,还望大小虾们帮忙解决解决. 例1: main() { int a=1,b=2,c=3; printf("%d,%d,%d",a=b=c,a=b==c,a==b=c); } 此题结果为:3,1,0 问题是中间那个a=b==c中b==c为假,结果应该是0,怎么成了1? 例2: 一道求质数的题目. #include<stdio.h> main() { int i,k,l; for(i=2;i<=50;i++) { for(k=2;k<=i;k++) if(i%k==0) {l=1;break;} if(l!=1) printf("%d,",i); } } 此题问题出在必顺在下划线之处再加一条语句"l=0".其中0可以随便用一个除1的都行,不然结果就只会显示出一个数.这是为什么?"l=0"究竟起了什么作用?谁知道能告诉我吗?谢谢!
搜索更多相关的解决方案: include  C语言  color  

----------------解决方案--------------------------------------------------------
main() { int a=1,b=2,c=3; printf("%d,%d,%d",a=b=c,a=b==c,a==b=c); }能运行吗? a==b=c,a==b结果是1,然后1=c ?? 我是菜鸟学错莫怪

[此贴子已经被作者于2005-3-30 0:47:13编辑过]


----------------解决方案--------------------------------------------------------
那里来的题目。有问题
----------------解决方案--------------------------------------------------------
题目没问题.我书里抄的.
----------------解决方案--------------------------------------------------------
奇怪,不解!
----------------解决方案--------------------------------------------------------
printf("%d,%d,%d",a=b=c,a=b==c,a==b=c); 谭浩强已把这问题说的很清楚了,从右到左运算 打出应该是3,1,0
----------------解决方案--------------------------------------------------------
最后一句应该是printf("%d,%d,%d",a=b=c,a=b==c,a==b==c);吧,不然系统运行时提示:left operand must be l-value。
运行结果是3,0,0
----------------解决方案--------------------------------------------------------
最后一句应该是printf("%d,%d,%d",a=b=c,a=b==c,a==(b=c);这样的话,输出的结果是3,1,0
因为在输出第一句时,a=b=c ,这是将c的值赋给了b,b值变为3,同样的a值变为3,
----------------解决方案--------------------------------------------------------
对于第二个问题是因为经过if(i%k==0) {l=1;break;}语句以后, L值就变为了1,如果下一个数为质数,就打印不出来了,所以只能看到一个输出。
----------------解决方案--------------------------------------------------------
呵呵,bangbangbee和simpley两人说的不错.还有,.simpley说的潭浩强是谁啊??你们两个能告诉我QQ吗?我加你们.
还有,新建一个C语言学习QQ群:805053,欢迎各位加入讨论.
----------------解决方案--------------------------------------------------------
  相关解决方案