您的位置:首页 > 其它

给新手关于自增自减运算的一些警示

2015-02-08 15:54 169 查看
大多数自学c语言的新手们不会太过于注重基础的掌握,而求快速开发,这样会造成程序出现各种各样的bug,现在我来举个简单的自增的运算的例子:

看如下代码:

int i = 0;
int k = 0;
while(i<10)
{
i=k++;
printf("%-3d%d\n",i,k);
}

Great,那么大家猜测下这个代码的输出结果吧。

很多人可能会说这个结果是这样的:

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++);

后面那个分号不能少哈,这个自行理解吧
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: