鱼C论坛

 找回密码
 立即注册
查看: 1389|回复: 6

[已解决]请教 C语言 课后题 第16课的

[复制链接]
发表于 2017-3-17 16:36:03 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
                for (i=0; i != 10, j != 10; i++)
答案解释  i !=0, j != 10  是逗号表达式,只取后边的值  j == 10   
能这么理解么(逗号表达式 i !=0,  j != 10  ————  i==0, j==0)都取后面的赋值号? 还是怎么回事的

如果这里是  for (i=0;  j != 10; i++)  j != 10  这不是都好表达式  这要想循环 就必须得满足 条件判断表达式  j != 10 呗?
最佳答案
2017-3-17 21:51:34
本帖最后由 Icetone 于 2017-3-17 22:02 编辑

for (i=0; i != 10, j != 10; i++) { }
//for( ;循环的条件;  )
外层循环的条件就是, j 不等于10 的时候才进入循环。
ps:后面的条件把前面的条件顶掉了,如果要两个同时满足写成 for(i=0; i != 10 &&  j != 10; i++)
外层循环进行第一次,内层循环10次,此时i=1,j=10;
外层循环想要进行第二次的时候,内层循环把 j 的值已经加到10了,所以外层循环不再进入。
所以一共打印了10个'A';

这些楼主最好亲自试一试,就明白了。

还有楼上的兄弟讲的不准确
逗号是依次向后运算(0.0,也是刚百度了一下才明白这个)
y=4,5; //把4赋值给y,逗号依次运算,到了5,但没有等号进行赋值,所以y=4;
y=(4,5); //括号内的都是赋值给y的值,先把4赋值给y,然后逗号依次运算,把5赋值给y,所以y=5.
QQ截图20170317215001.png
QQ图片20170317162655.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-3-17 16:36:33 | 显示全部楼层
  1. #include <stdio.h>

  2. int main()
  3. {
  4.                 int i, j;
  5.                
  6.                 for (i=0; i != 10, j != 10;i++)
  7.                 {
  8.                                 for (j=0; j < 10; j++)
  9.                                 {
  10.                                                 putchar('A');
  11.                                 }
  12.                 }
  13.                 putchar('\n');
  14.        
  15.                 return 0;
  16. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-3-17 17:25:02 | 显示全部楼层
如果这里是  for (i=0;  j != 10; i++)
那就跟题意的结果是一样的,因为内部循环后j的值是10
原题主要是让你理解逗号符赋值时是取后边的
比如 b=1;c=2; a=b,c;结果a是2
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2017-3-17 21:51:34 | 显示全部楼层    本楼为最佳答案   
本帖最后由 Icetone 于 2017-3-17 22:02 编辑

for (i=0; i != 10, j != 10; i++) { }
//for( ;循环的条件;  )
外层循环的条件就是, j 不等于10 的时候才进入循环。
ps:后面的条件把前面的条件顶掉了,如果要两个同时满足写成 for(i=0; i != 10 &&  j != 10; i++)
外层循环进行第一次,内层循环10次,此时i=1,j=10;
外层循环想要进行第二次的时候,内层循环把 j 的值已经加到10了,所以外层循环不再进入。
所以一共打印了10个'A';

这些楼主最好亲自试一试,就明白了。

还有楼上的兄弟讲的不准确
逗号是依次向后运算(0.0,也是刚百度了一下才明白这个)
y=4,5; //把4赋值给y,逗号依次运算,到了5,但没有等号进行赋值,所以y=4;
y=(4,5); //括号内的都是赋值给y的值,先把4赋值给y,然后逗号依次运算,把5赋值给y,所以y=5.
QQ截图20170317215001.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2017-3-18 11:37:04 | 显示全部楼层
lumber2388779 发表于 2017-3-17 17:25
如果这里是  for (i=0;  j != 10; i++)
那就跟题意的结果是一样的,因为内部循环后j的值是10
原题主要是 ...

谢谢 解答
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-18 11:37:36 | 显示全部楼层
Icetone 发表于 2017-3-17 21:51
for (i=0; i != 10, j != 10; i++) { }
//for( ;循环的条件;  )
外层循环的条件就是, j 不等于10 的 ...

谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-3-18 12:05:42 | 显示全部楼层

不客气,大家一起学习。
你问这个问题之前,我还真没有注意过逗号运算符的问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-26 21:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表