1.对于等号在c语言中的作用更加深刻,=是用来将等号右边的结果复制到左边的记忆体内,且如果左边的记忆体内有数据,就会产生覆盖的效果,这导致数据交换不能简单的用integer1=integer2;integer2=integer1来表示,这时引入第三个记忆体,将第三个记忆体当做中间的连接通路
第三个记忆体的作用就类比于数学中两个量的中间量,比如比较大小,将0,1作为中间值等,两者间具有异曲同工之处
2.数值交换的第二个方法,我认为是利用了等号的覆盖的特殊作用,如果将输入的interger1,integer2记为x,y,每一步等号左边的记忆体将会导致内部的对应记忆体的变化,如下:
int integer1,integer2; x,y
integer1=integer1➕integer2 : x➕y,y
integer2=integer1➖integer2; x➕y,x
integer1=integer1➖integer2; y,x
3.学过两个数据交换后,我第一反应是其中原理是什么,于是进行三个数据交换的练习并尝试探索其中的原理,将三个记忆体中的数表示为x,y,z,如下:(为了简写表达为123)
int integer1,integer2,integer3;x x,y,z
1=1+2+3; x+y+z,y,z
3=1-2-3; x+y+z,y,x
1=1-2-3; z,y,x 自此之后三数据交换问题转换为二数据交换问题,不再叙述
4.对于%d符号的理解,%d可用于占位,比如printf,scanf,双引号内可用于占位,其中的内容在括号内,双引号外,逗号后去找,如printf("%d内\n",integer1),printf输出的内容是integer1里的内容
还存在的疑问:A.4中提及的一行代码中\n的作用?
B.有些代码中,如scanf("%d",&integer1)此时%d的占位作用是怎么体现?%d的内容应该从哪里读取?是从输入的内容中读取吗?