语句 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)
;
语句 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] 后的值。结果,第二个循环将复制ainto的内容b,并在复制后停止\0。第一个循环将在执行复制之前遇到第一个\0in时立即停止复制b,而忽略它可能在 中找到的任何零a。
不,他们不是。
在语句 A 中,您b[i]在为其赋值之前进行检查
在第二个语句中,您在检查之前分配值。
第一个类似于while 循环,第二个类似于do-while 循环。
不,他们不一样
在第二个你设置了b[i]值,然后你检查了!= '\0'。
首先你已经检查了b[i] != '\0'之前设置它
我也可以给你建议:
int i = -1;
while(b[++i] = a[i]);