大家看看下面的代码在VC的编译下的结果是什么 :)#include<stdio.h>
void main(){
int i=0;
int t=0;
int p=0;
t=(--i)+(--i)+(--i);
printf("%d\n",t);
i=0;
p =(++i)+(--i)+(++i)+(--i);
printf("%d\n",p);
i=0;
p =(++i)+(--i)+(--i)+(++i);
printf("%d\n",p);
i=0;
p =(--i)+(--i)+(++i)+(++i);
printf("%d\n",p);
i=0;
p =(++i)+(++i)+(--i)+(--i);
printf("%d\n",p);
}呵呵你会看到好有趣的结果,希望大家能分析出来VC的编译器是怎么分析以上的表达式的 :)
void main(){
int i=0;
int t=0;
int p=0;
t=(--i)+(--i)+(--i);
printf("%d\n",t);
i=0;
p =(++i)+(--i)+(++i)+(--i);
printf("%d\n",p);
i=0;
p =(++i)+(--i)+(--i)+(++i);
printf("%d\n",p);
i=0;
p =(--i)+(--i)+(++i)+(++i);
printf("%d\n",p);
i=0;
p =(++i)+(++i)+(--i)+(--i);
printf("%d\n",p);
}呵呵你会看到好有趣的结果,希望大家能分析出来VC的编译器是怎么分析以上的表达式的 :)
你最好再在borland c++ 下执行以下,看看是否一样.
在VC中是用的算符优先文法分析表达式的,表现的形式是先算前两个然后再按通常的方式进行计算,在TC中是把i值做引用这样一来 设i=0 ;t=(++i)+(++i)+(++i);等于9,在VC中就为7。
对与VC我能算出正确的表达式值但是并不知道他的分析方法到底是不是像我说的那样,如果大家知道的话希望继续讨论;
呵呵,真理越辩越明嘛!
:)