1. int b=10; int c=(++b)*(++b);c和c#中c的结果?
1.1. 通过反汇编可以得出c和c#对应汇编码,分别对应图1.1和图1.2。
图1.1 c对应汇编码
图1.2 c#对应汇编码
1.2. 输出结果
由图1.1可知,在c中针对同一内存进行两次累加,然后根据最终累加结果计算乘积=》c=144。由图1.2可知,在c#中虽然是针对同一内存进行两次累加,但第一次累加开辟空间,临时结果参与乘法运算=》c=132。
2. int b=10; int c=(b++)*(b++);c和c#中c的结果?
2.1. 通过反汇编可以得出c和c#对应汇编码,分别对应图2.1和图2.2。
图2.1 c对应汇编码
图2.2 c#对应汇编码
2.2. 输出结果
由图2.1可知,在c中针对同一内存先计算乘积,然后进行两次累加=》c=100。由图2.2可知,在c#开辟2个临时空间,然后将中间结果进行乘积=》c=110。不同编程语言虽然语法相似但编译结果不同,最终结果也就会出现差异。