C 编程 - while 循环中的逗号运算符

标签 c while-loop programming-languages comma-operator

<分区>

程序 1:

#include<stdio.h>
 int main()
 {
     int i=0;
     while(i<=8,i++);
     printf("%d",i);
     return 0;
  }

程序 2:

#include<stdio.h>
 int main()
{
  int i=0;
  while(i++,i<=8);
  printf("%d",i);
  return 0;
}

Prog 1 的输出为 1,Prog 2 的输出为 9。

有人可以解释一下这里发生了什么吗?这两个代码有何不同?

最佳答案

逗号运算符依次计算它的两个参数,丢弃除最后一个以外的结果。最后计算的表达式决定了整个表达式的结果。

i<=8,i++ - 这里表达式的值是i++的值, 这是 i 的值在递增之前。它为 0,因此循环立即终止。

i++,i<=8 - 这里表达式的值是i<=8的值仅当 i 时为 0增加到 9。

个人意见:我认为第二种形式虽然在某种程度上类似于 for 循环,但对于代码的读者来说不如实际的 for 循环清晰。

关于C 编程 - while 循环中的逗号运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41611557/

相关文章:

c++ - 如何从 mp3 文件中提取音频数据?

c - 为什么我们不能通过简单地将值分配给新变量来复制文件描述符?

c - C/C++ 优化如何影响 volatile 变量?

c - While 循环未正确迭代

php - 使用 while、do 或 for 循环生成新的 id 或编号

php - MYSQL While 循环下拉菜单

C - 为什么在使用 uint64_t 计数器时 for 循环会卡住,而 while 循环却不会?

programming-languages - 您为什么或不使用多语言解决方案实现?

language-agnostic - 识别不同语言并将它们发送到相应编译器的编译器。可能的?

scripting - 设备启用/禁用脚本