大多数自学c语言的新手们不会太过于注重基础的掌握,而求快速开发,这样会造成程序出现各种各样的bug,现在我来举个简单的自增的运算的例子:
看如下代码:
int i = 0;
int k = 0;
while(i<10)
{
i=k++;
printf("%-3d%d\n",i,k);
}
很多人可能会说这个结果是这样的:
1 1
2 2
3 3
......
那么结果,往往都是很残酷的,真正的结果应该是这样的:
0 1
1 2
....
10 11
那么为什么会出现这种情况呢?我们来分析一下:
其实现行的几个主流的编译器,vc和vs里面,自增运算符i++这种类型的,是先用后加的,也就是说它要完成其本身该做的事情,然后再去自加。
好比这行语句:
int i=0;
printf("%d",i++);
这个就会输出0,但是输出之后i值就变了,变成了1,这也就是先用后加。
但是++i却不同,它一定是先加后用的,这个没有疑问,所以新手以后尽量避免i++出现的情况,除非你已经能够理解其中的内容。
同时根据这个语句也可以做出一个一句话copy字符串的语句,如下:
char a[64];
char b[64];
while(a++=b++);
后面那个分号不能少哈,这个自行理解吧