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

时间:2013-04-15 10:32:43

标签: 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)
      ;

3 个答案:

答案 0 :(得分:3)

不,他们是不同的:

  • 第一个循环在分配之前检查b[i] 的值;
  • 第二个循环在分配后检查b[i] 的值。

结果,第二个循环会将a的内容复制到b,并在复制\0后停止。第一个循环在执行副本之前遇到\0中的第一个b时会立即停止复制,而忽略它在a中可能找到的任何零。

答案 1 :(得分:2)

不,不是。

在语句A中,您在为其分配值之前检查b[i]

在第二个语句中,您在检查前分配值。

第一个就像 while循环,其中第二个就像 do - while循环

答案 2 :(得分:0)

不,他们不一样

在第二步中,您设置了b[i]值,然后检查了!= '\0'

在fisrt中,您在设置之前检查了b[i] != '\0'

我也可以向你推荐:

int i = -1;
while(b[++i] = a[i]);