1.printf的运行顺序是从右向左
但是printf是如果做到从右向左的,我们在函数的传参的时候,左边参数如果是变量,也可以用于右边的参数,说明函数的参数应该是先运行左边的语句,而printf也是值传递,不涉及地址,所以不能在函数内部做操作????????????
大概搞清楚了,函数的参数也是一个压栈和出栈的过程,所有函数的顺序都是从右向左的,从右向左压栈,出栈的时候就是左边先出,所以函数形参想要使用形参定义的参数,需要写在那个参数右边;
2.在函数中使用const修饰的变量其实还是在栈区开辟的空间,虽然不能直接修改,但是可以通过地址修改。
3.局部变量未初始化的时候都是随机值,但是全局变量不初始化也是0;(原因还在研究)
4.初始化的全局变量在data段,未初始化的在bss段;
5.关于取值范围
以char类型举例
char类型的范围是-128 -127
原本是-127到127,由于-0的原因;
将1000 0000定义为-128的补码
注意!!!!:-128没有反码和原码;
由此可知如果对-128减一,则对1000 0000减一,得到0111 1111,值为127,以此类推
结论:如果超出了变量的取值范围,则会形成循环;
存储数据时,看数据的正负;
取出数据时,看数据的类型;
反码等于原码符号位不变,其他位取反,补码为原码+1
6.关于标准IO函数与文件IO中的光标移动问题
6.1在fopen或者open打开文件的时候,如果使用r,r+,O_RDONLY打开的话,在使用fread或read函数的时候,光标会随之移动,但是使用fwrite或write函数的时候光标不会移动;
6.2在fopen或者open打开文件的时候,如果使用w,w+,O_WRONLY打开的话,在使用fread或read函数的时候,光标不会随之移动,但是使用fwrite或write函数的时候光标会移动;
6.3在fopen或者open打开文件的时候,如果使用a+,O_RDWR|O_APPEND打开的话,在使用fread或read函数的时候,光标也会随之移动,但是使用fwrite或write函数的时候会默认在结尾添加;并且操作光标只会对读产生影响,而不影响写的位置,写都是在末尾进行;
6.4在fopen或者open打开文件的时候,如果使用a,O_WRONLY|O_APPEND打开的话,此时不能进行读操作,但是此时操作光标,对于写的位置没有影响,每次都会在末尾进行写入;