我正在看C中的字符串操作,我不明白为什么陈述s1[i] = s1[++i];
不会替换第一个H
下一个字符e
。看看代码:为什么这段代码不会改变字符串?
#include <stdio.h>
main()
{
char s1[] = "Hello world !";
for(int i = 0; s1[i] != '\0'; ++i)
s1[i] = s1[++i];
printf("%s", s1);
}
它打印出的el r
Hello world !
代替
因为's1 [i] = s1 [++ i];'是未定义的行为。 –
@Phylogenesis哦好吧真棒我认为,++我只关心s1 [++ i]不是为了整个声明。 – ChiseledAbs
[数组索引中的序列点]的可能重复(http://stackoverflow.com/questions/37403357/sequence-point-in-array-index) –