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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 craneteng 于 2015-11-5 11:25 编辑

请问  这个  C语言中 int i=0,j;
for(j=3;i=j=0;i++,j++)
循环多少次,这个循环条件到底是怎么判断的?

19 个回复

正序浏览
首先我觉得你语法是有错误的,j=i=0,在Xcode中直接报错,xcode中给出修复警告提示是这样写的:(j=
i=0),还有你没有定义i和j 的类型(可能你的程序没有全部写出来吧 ,哈哈)。最后我的理解是for条件判断是(i=j=0)是为假条件,永远不循环,如果判断条件是(i=j=1)为真条件即为恒成立,该for结构将无线循环!附上我调试的截图希望可以帮到你!

QQ20151115-2.png (13.63 KB, 下载次数: 62)

(i=)

(i=)

QQ20151115-3.png (427.25 KB, 下载次数: 55)

QQ20151115-3.png
回复 使用道具 举报
不会循环的
回复 使用道具 举报
i=j=0 判断是0 恒不成立 一次也不循环 换成1就死循环了
回复 使用道具 举报
for 循环的定义再看看
回复 使用道具 举报
把自己想成计算机,一步一步的走,走两步就能找到规律
回复 使用道具 举报
您的控制条件不对,这样重复赋值条件恒成立,无限死循环啊
回复 使用道具 举报
c9527 中级黑马 2015-11-6 08:58:47
14#
不可以吧
回复 使用道具 举报
会长大的小牛 发表于 2015-11-5 19:10
死循环,j=0 为假,所以判断i=0,i=0 为真则是1  所以无限循环死循环

第一次i是为0
那第二次呢 i++了  所以应该是先判断的i==j  返回0   0==0
回复 使用道具 举报
熊德玺 发表于 2015-11-4 21:33
你的表达式 应该不对吧   for语句中的第二个表达式,应该是条件判断语句,你的是这个i=j=0;是赋值语句,你 ...

恒真   i==j==0  优先级一样,表达式从左向右计算  i==0 始终为假,因为 i 和 j 一直在增加,所以返回0
  接下来判断 0 == 0  死循环
回复 使用道具 举报
中间的条件不能写成恒等式  需要是 == 或者大于小于,这样一次也不会进入循环。你这种写法就是赋值,当程序走过for语句后 i和j都被赋值为0
回复 使用道具 举报
lixp 中级黑马 2015-11-5 20:50:01
10#
你那个是赋值,所以进不去循环
回复 使用道具 举报
你中间的条件是个赋值语句怎么解释啊,这是错误的表达式
回复 使用道具 举报
你中间的条件是个赋值语句怎么解释啊
回复 使用道具 举报
会长大的小牛 发表于 2015-11-5 19:10
死循环,j=0 为假,所以判断i=0,i=0 为真则是1  所以无限循环死循环

当然如果从左往右判断得到的答案是一样的
回复 使用道具 举报
死循环,j=0 为假,所以判断i=0,i=0 为真则是1  所以无限循环死循环
回复 使用道具 举报
一次都不会执行,i=j=0,执行了将i和j都赋值为0,然后for()条件判断永远为假,一次都不会执行循环操作
回复 使用道具 举报
貌似是不会执行
回复 使用道具 举报
你的表达式 应该不对吧   for语句中的第二个表达式,应该是条件判断语句,你的是这个i=j=0;是赋值语句,你是不是想表达i==j==0;  如果是这个,那就一次也不会循环,因为这个为假,恒成立的假
回复 使用道具 举报
一次都不会循环
循环控制条件i=j=0恒成立
是想表达i==j==0吗?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马