2013年10月15日

摘要: 关于vc编译器中进行表达式计算时,按照栈的方式进行处理。编译器参照vc++6.0如k = 3;result3=(++k)+(k++)+(++k); k = 3;result4=(++k)+((k++)+(++k));两个的结果不同,前者先处理++k,接着是k++,然后k的值自加,接着处理++k,然后得到结果。结果为:4+4+5 = 13;后者先处理++i,结果入栈,接着k++入栈,然后++k,结果与k++相加,最后在加上++k。结果为:5+(5+5) = 15。 阅读全文
posted @ 2013-10-15 19:55 楠哥1991 阅读(104) 评论(0) 推荐(0) 编辑

2013年9月22日

摘要: 先附上源代码:#include void output1(){int i = 5;printf("%d,%d\n",i++,++i);}void output2(){int i = 5;printf("%d,%d\n",++i,i++);}void output3(){int i = 5;printf("%d\n",++i+i++);}void output4(){int i = 5;printf("%d\n",(i++)+(++i));}void output5(){int i = 5;printf(" 阅读全文
posted @ 2013-09-22 17:07 楠哥1991 阅读(610) 评论(0) 推荐(1) 编辑

2013年9月16日

摘要: 1、空结构体的size为1,因为必须保证结构体的每一个实例都在内存中有独一无二的地址;struct {static int s1;}st1;sizeof(st1) = 1;2、结构体的静态成员不会对结构体的大小产生影响,因为静态变量的存储位置与结构体的实例地址无关;struct {char a;static int s2;}st2;sizeof(st2) = 1;3、根据变量的对齐规则(“对齐”行为由编译器实施,使得变量的起始地址具有某些特性,例如,4字节的int型变量,其起始地址应该位于4个字节的边界上,即起始地址能够被4整除),以32位系统为例,变量的对齐规则如下:char在字节边界上对齐 阅读全文
posted @ 2013-09-16 21:13 楠哥1991 阅读(2113) 评论(0) 推荐(0) 编辑

导航