[应用相关] 还得继续学,求大师解释这个for语句的作用

[复制链接]
2101|13
地瓜patch 发表于 2025-8-13 14:57 | 显示全部楼层 |阅读模式


下边这个循环语句,我的理解是三个等号同时成立的话,进入循环体。否则不进入。请教这样理解是否正确?

for (session_done = 0, errors = 0, session_begin = 0; ;)
  {
    .........
}

那么,若是理解正确的话,能否写成如下的while循环,同样三个等号同时成立的话,进入循环体。否则不进入。
while (session_done = 0, errors = 0, session_begin = 0)
  {
    .........
}

评论

俺也一样  发表于 2025-8-23 10:51
第一次见这种用法  发表于 2025-8-23 10:04
LcwSwust 发表于 2025-8-13 15:31 | 显示全部楼层
本帖最后由 LcwSwust 于 2025-8-13 15:34 编辑

一个等号是赋值,不是关系运算。
for的第一项是是单次表达式,相当于初始化,不是循环的条件,拿出来放到for之前也一样的效果。

==   &&    了解一下
 楼主| 地瓜patch 发表于 2025-8-13 20:13 | 显示全部楼层
LcwSwust 发表于 2025-8-13 15:31
一个等号是赋值,不是关系运算。
for的第一项是是单次表达式,相当于初始化,不是循环的条件,拿出来放到fo ...

感谢大佬,后边的两个分号是空的,怎么理解呢?
LcwSwust 发表于 2025-8-14 09:02 | 显示全部楼层
本帖最后由 LcwSwust 于 2025-8-14 09:04 编辑
地瓜patch 发表于 2025-8-13 20:13
感谢大佬,后边的两个分号是空的,怎么理解呢?

好像是会死循环,自己验证一下。
forgot 发表于 2025-8-14 09:18 | 显示全部楼层
for循环要看;号,中间的条件表达式为真就一直循环,当条件表达式不存在时,会为真,所以是一直循环
 楼主| 地瓜patch 发表于 2025-8-14 10:58 | 显示全部楼层
forgot 发表于 2025-8-14 09:18
for循环要看;号,中间的条件表达式为真就一直循环,当条件表达式不存在时,会为真,所以是一直循环 ...

感谢大佬
 楼主| 地瓜patch 发表于 2025-8-14 10:59 | 显示全部楼层
LcwSwust 发表于 2025-8-14 09:02
好像是会死循环,自己验证一下。

非常感谢
steelen 发表于 2025-8-15 15:10 | 显示全部楼层
这是一个赋值 session_done = 0, errors = 0, session_begin = 0; 然后进入死循环
 楼主| 地瓜patch 发表于 2025-8-15 17:08 | 显示全部楼层
steelen 发表于 2025-8-15 15:10
这是一个赋值 session_done = 0, errors = 0, session_begin = 0; 然后进入死循环

哪这个语句意义不大
coody 发表于 2025-8-15 23:35 | 显示全部楼层
3个等号是赋值,然后是无条件循环。
William1994 发表于 2025-8-16 07:27 | 显示全部楼层
c语言的逗号运算符, 优先级低于等号;  当然是高于语句结束的分号的;
逗号表达式的评估结果是最后一个的。

参考c语言标准制定时候考虑的硬件实现,
运算符都是要放到cpu的工作寄存器(x86 累加器)里面计算的,从左往右挨个执行(优先级平级的时候),最后存在工作寄存器里面的就是最终结果。
如果不是整数的,提升成整数,因为c语言的整数的宽度和ARM和X86的寄存器宽度一样的。
 楼主| 地瓜patch 发表于 2025-8-22 17:41 | 显示全部楼层
William1994 发表于 2025-8-16 07:27
c语言的逗号运算符, 优先级低于等号;  当然是高于语句结束的分号的;
逗号表达式的评估结果是最后一个的。

感谢,又学到了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:出一块TI-PLABS-AMP-EVM

1927

主题

15214

帖子

31

粉丝
快速回复 在线客服 返回列表 返回顶部