发现一些容易忘记的细节
1:i++与++i
我们先看下结果 然后再看下汇编
int a = 0; int b = 0;
printf("刚开始 a = %d; b = %d; \n", a, b);
a = b++;
printf("a = b++ a = %d; b = %d; \n", a, b);
a = ++b;
printf("a = ++b a = %d; b = %d; \n", a, b);
接下来上汇编的图
从第三和第四行汇编可以看到 a = b++ 是先把b的值放入寄存器eax里 此时b = eax = 0 在把eax赋值给a 此时a = 0
第五行 把b的值放入寄存器ecx中 ecx = 0
第六行 把ecx和1累加 ecx = 0+1 = 1
第七行 把ecx赋值给b ecx = b =1
总结如下:
单纯的i++ 等价于 ++i;
表达式中 是不一样的 a = i++ a = ++i 以及 i++和++i 作为函数参数 例如 fun(int a){...} main(){fun(i++);}
注意下
int a = 0; int i = 0;
a = i++ + ++i;
a = 4; i = 3;
2:cgi的一些知识以及
表单输入的数据通过URL编码后传输到服务器端,我们有必要了解一下URL的编码规则:
1、 每个name/value以name=valu的形式配对出现,每对name/valu之间用&分隔
2、 若用户没有对某个name赋值,则以“name=”的形式出现
3、 任何特殊字符以百分号%用十六进制编码。
4、 输入区的空格将以“+”显示