简单概述自加操作
发表于更新于
字数总计396阅读时长1分钟阅读量
自加操作有两种,++i
和i++
,很多新手都分不清这两个的区别,这里简单说一下这两个写法有什么不同。
普通解法
++i
和i++
都是自加操作,两者的区别就在于前者是先自加再使用,后者是先使用再自加,下面用一段简短的代码来解释这个问题:
1 2 3 4 5 6 7 | int main() { int n = 0; printf("%d\n", ++n); printf("%d\n", n++); printf("%d\n", n); return 0; }
|
这段代码的输出结果是什么呢?显而易见,是1 1 2
,接下来咱们来讲解为什么会是这个结果。
++n
先将n的值加一并赋值给n,然后再传递给printf | 此时n=1,传值1n++
先保存n的副本,然后将n加一并赋值给n,然后再将副本传递给printf | 此时n=2,传值1- 传值2
由此可见,上面的代码还能写成下面的样子,效果是一样的:
1 2 3 4 5 6 7 8 9 | int main() { int n = 0; n += 1; printf("%d ", n); int temp = n; n += 1; printf("%d %d", temp, n); return 0; }
|
函数&指针解法
没学过相关内容的小伙伴可以跳过这个部分
接下来我们用函数的形式再次把上面的代码写一遍,为了节省篇幅就把函数写在上面了:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | int increaseAndReturn(int *value) { *value += 1; return *value; }
int returnAndIncrease(int *value) { int temp = *value; *value += 1; return temp; }
int main() { int n = 0; printf("%d %d %d", increaseAndReturn(&n); printf("%d\n", returnAndIncrease(&n)); printf("%d\n", n) return 0; }
|
简单概述自加操作空 梦 | 山岳库博
更新于 2021-09-24
发布于 2021-09-24