有关是否在所有计算完成前,不更改外部变量??
实例如下:
int iTest1=0;int iTest2=0;
int f1(){iTest1++;return iTest1;}
int f2(){iTest2+=iTest1;return iTest2; }
如果:
int i=f1()+f2();此时,iTest2=0;
如果:
if(f1()&&f2());此时,iTest2=1;
是否在所有计算完成前,不更改外部变量??
[解决办法]
楼主运行一下看看,貌似跟你的结论有出入啊
- C/C++ code
#include<stdio.h>int iTest1=0;int iTest2=0;int f1(){ iTest1++; return iTest1;}int f2(){ iTest2 += iTest1; return iTest2; }int main(){ int i=f1()+f2(); //此时,iTest2=0; //if(f1()&&f2()); //此时,iTest2=1; printf("iTest1=%d\n", iTest1); printf("iTest2=%d\n", iTest2); return 0; }
[解决办法]
你要考虑到&&这个符号,从左到右执行,如果左边不对,右边的就不执行了
[解决办法]
[解决办法]
关于运算顺序本身标准除了那几个符号有规定外其他都没规定。
比如:expresion1+expresion2;到底是先计算expresion1还是expresion2,完全取决编译器,当然现在的CPU会有乱序执行可能会自行调整代码顺序。像你这样的问题真的没法给你确切答案