声明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)
;
答案 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]);