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