一个使我迷惑的问题

isabela0528 2003-09-11 09:54:20
执行语句for(i=1,j++<4;)后,变量i的值是四还是五?

我认为是四,而老师硬要说是五,我不知道为什么?谢谢!
...全文
24 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
scpzhwang 2003-09-14
  • 打赏
  • 举报
回复
如果语句是:for(i=1;i++<4;;)
那么执行完后的变量i应该是5.
因为这个循环语句的意思是当i++<4的时候才执行此语句以后的循环体.
当i为3时,附合条件.执行此语句后的循环体.然后i++,即3+1,此时i为4
当i为4时,不附合条件,就跳出此语句后的循环体,但是i++这步要执行.即4+1,此时i为5.

uglykoala 2003-09-14
  • 打赏
  • 举报
回复
这是个什么题目撒。把出题目的人拉出来。
这个人连FOR语句的结构都不清楚。
for语句应该且仅仅有两个分号。
这是什么。一个逗号,一个分号。什么东东
我选D
isabela0528 2003-09-14
  • 打赏
  • 举报
回复
其实这只是一道考试题,完整的题目:

执行语句for(i=1,j++<4;)后, 变量i的值是()

A. 3 B.4 C.5 D.不确定

现在我也昏了,到底是该选哪个?
liushmh 2003-09-12
  • 打赏
  • 举报
回复
呵呵,这很迷惑吗,拿到机器上运行一下不就知道了
jp311 2003-09-12
  • 打赏
  • 举报
回复
for (i = 1, j++ < 4; ; )???
如果真是这样那就什么结果也没有(死循环)
Zeroins 2003-09-12
  • 打赏
  • 举报
回复
to isabela0528(Isabel) :
i++ < 4 被执行时,首先将 i 原来的值带入比较,然后 ++
++ 是这个式子的一部分,上面的执行不会被从中间截断的

to 楼主:
很遗憾
for (i = 1, i++ < 4; ; )
如果循环体中没有跳出的语句,这也是一个死循环,i不断 ++ 而已
lilyy 2003-09-12
  • 打赏
  • 举报
回复
是的,如果是
for(i=1;i++<4;)
执行后肯定是5了
isabela0528 2003-09-12
  • 打赏
  • 举报
回复
回复人: Zeroins(等待ing,学习ing~) ( ) 信誉:100 2003-09-11 23:59:00 得分:0

楼主是不是写错了?确定一下呀
<1> for (i = 1, j++ < 4; ; )
如果循环体中没有跳出的语句,这是一个死循环,i 始终为 1

<2> for (i = 1; i++ < 4; )
...
i == 2 时
符合 i < 4 ,然后执行 i++,此时 i == 3
i == 3 时
符合 i < 4 ,然后执行 i++,此时 i == 4
i == 4 时
不符合 i < 4 ,仍然会执行 i++,此时 i == 5,然后跳出循环
答案为 5

<3> for (i = 1; i < 4; i++)
...
i == 2 时
符合 i < 4 ,执行循环体,然后再执行 i++,此时 i == 3
i == 3 时
符合 i < 4 ,执行循环体,然后执行 i++,此时 i == 4
i == 4 时
不符合 i < 4 ,跳出循环
答案为 4

我想补充说一句,当i==时,确实已经不符合条件了,但是它执行了i++<4后才会退出,条件虽不满足,但是i是用了变,好象它的值已经在这里发生了改变,对吗?

答案为5?
isabela0528 2003-09-12
  • 打赏
  • 举报
回复
对不起,我现在才发现,我犯了一个很大的错误,我写错了,哇。。。。。。。。。

for (i = 1, i++ < 4; ; )
Zeroins 2003-09-11
  • 打赏
  • 举报
回复
楼主是不是写错了?确定一下呀
<1> for (i = 1, j++ < 4; ; )
如果循环体中没有跳出的语句,这是一个死循环,i 始终为 1

<2> for (i = 1; i++ < 4; )
...
i == 2 时
符合 i < 4 ,然后执行 i++,此时 i == 3
i == 3 时
符合 i < 4 ,然后执行 i++,此时 i == 4
i == 4 时
不符合 i < 4 ,仍然会执行 i++,此时 i == 5,然后跳出循环
答案为 5

<3> for (i = 1; i < 4; i++)
...
i == 2 时
符合 i < 4 ,执行循环体,然后再执行 i++,此时 i == 3
i == 3 时
符合 i < 4 ,执行循环体,然后执行 i++,此时 i == 4
i == 4 时
不符合 i < 4 ,跳出循环
答案为 4
cxjddd 2003-09-11
  • 打赏
  • 举报
回复
逗号表达式的优先级是最低的,那是 i=1 和 j++<4。
jp311 2003-09-11
  • 打赏
  • 举报
回复
不管什么编译器都应该为5,如果等于4那证明你的编译器有问题了!!!
实践是检验真理的唯一方法
ghostmirror 2003-09-11
  • 打赏
  • 举报
回复
有没有人会汇编的啊,能不能把汇编的代码贴出来啊,谢谢~~
那应该就很好理解的吧~:)
ghostmirror 2003-09-11
  • 打赏
  • 举报
回复
i=1时,i<4真;然后i++,i等于2,执行for里面的语句
。。。。
。。。
i=4时,i<4为假,但是i++仍然要执行,然后跳出for循环


如果是for(i=1;i<4;i++)
当i=4时候,判断条件 i<4为假,所以就直接跳出,不执行后面的i++,这个时候i最后为4
isabela0528 2003-09-11
  • 打赏
  • 举报
回复
如果TC2,答案是多少?
ghostmirror 2003-09-11
  • 打赏
  • 举报
回复
晕,你编译一下不就知道了??
最后i是5 (用的tc3)

那个语句应该是for(i=1;i++<4;)吧
fenghuazhao 2003-09-11
  • 打赏
  • 举报
回复
不懂,太难了
i应该不变
因为初始值为一
isabela0528 2003-09-11
  • 打赏
  • 举报
回复
对不起,我少写了一个分号
执行语句for(i=1,j++<4;;)后,变量i的值是四还是五?
jp311 2003-09-11
  • 打赏
  • 举报
回复
是不是for (i = 1; i++ < 4; )???
应该是5
因为当i == 4的时候,做i++ < 4,其实是
temp = i; temp为4
++i; i为5
temp < 4
tryboy 2003-09-11
  • 打赏
  • 举报
回复
我晕。你就写这么一个错语句,叫人家怎么回答呀。
加载更多回复(2)

69,335

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧