c - 在c中使用赋值语句for循环条件

标签 c

陈述 A 和 B 相等吗?

int i;
char a[] = "Hello\n";
char b[100];    

声明A,

for(i=0; b[i] != '\0'; ++i)
    b[i] = a[i];

语句B,

for(i=0; (b[i] = a[i]) != '\0'; ++i)
      ;

最佳答案

不,它们是不同的:

  • 第一个循环检查 b[i] 的值作业之前;
  • 第二个循环检查 b[i] 的值完成任务后

结果,第二个循环将复制 a 的内容进入b ,复制后停止\0 。第一个循环一旦遇到第一个 \0 就会停止复制。在b在执行复制之前,忽略可能在 a 中找到的任何零.

关于c - 在c中使用赋值语句for循环条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16013011/

相关文章:

c++ - 如何为“(1+3 * ( 5/4)) 之类的字符串编写求值器并获得数值结果

c++ - 如何在 Windows 7 中以编程方式调用 Ctrl+Alt+Del 窗口

c++ - 错误 C2143 : syntax error : missing '{' before '*'

c - 我们如何从 GLSL 中获取变量值?

c - 内存分配给带有指针的结构

c++ - 所有 .txt 文件的列表

c - 在 C 中使用 glib 函数获取交互式输入

c - fread 不写入 ptr

c - 从 libevent 中的 HTTP 服务器响应中获取所有 HTTP header

c - int 矩阵中的段错误