建设银行公积金查询网站首页,平面设计免费自学网,工商企业信息查询网站,自己如何做购物网站目录
#xff08;1#xff09;前置加加和后置加加的区别
#xff08;2#xff09;printf输出前置加加
#xff08;3#xff09;printf输出后置加加
#xff08;4#xff09;printf输出printf #xff08;1#xff09;前置加加和后置加加的区别
首先我们先来了解…目录
1前置加加和后置加加的区别
2printf输出前置加加
3printf输出后置加加
4printf输出printf 1前置加加和后置加加的区别
首先我们先来了解一下前置加加和后置加加的区别。
前置加加在编译器里的操作
//a
int a 0;
a a 1;
return a;
前置加加是先加一后赋值返回的值是加一之后的值。
后置加加在编译器里的操作
//aint a 0;
tmp a;
a a 1
return tmp; 后置加加是先把值赋给临时量然后再加一返回的值是临时量的值。
前置加加可以做左值因为前置加加返回的是a的值是可以进行操作的后置加加则不可以因为后置加加返回的是一个临时量并不是程序中定义的可寻址变量不能通过地址对temp进行操作。 2printf输出前置加加
#includestdio.hint main()
{int i 1;printf(%d,%d\n,i,i);return 0;
} printf函数计算参数的时候是从右往左压栈的。目的是为了计算参数的个数。编译器首先从右往左计算各参数的值再进行压栈操作最右端的i的值是计算出来是2保存在eax寄存器中接着计算倒数第二个i的值给eax寄存器加一保存为3然后进行压栈把eax寄存器里的i的地址放入栈中此时输出的值是i的值所以都是3. 3printf输出后置加加
#includestdio.hint main()
{int i 1;printf(%d,%d\n,i,i);return 0;
} 最右端的i的值为1保存在临时量里计算出i的值为2倒数第二个i的值为2i的值为3i也保存在对应的临时量里但是两个临时量保存的地址是不同的进行压栈操作压入的是保存两个临时量的地址所以输出的是2和1.
汇编指令 4printf输出printf
#includestdio.hint main()
{int i 33;printf(%d\n,printf(%d ,printf(%d ,i)));return 0;
} 首先输出的第一个33是i的值第二个%d算出来的是33的值的字节大小占两个字节还有空格的字节长度一共是三个字节所以输出的是3,第三个%d算出来的是3的值的字节大小占一个字节还有空格的字节长度一共是两个字节所以输出的是2。