首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

有关是否在所有计算完成前,不更改外部变量?解决方案

2012-04-01 
有关是否在所有计算完成前,不更改外部变量??实例如下:int iTest10int iTest20int f1(){iTest1++retur

有关是否在所有计算完成前,不更改外部变量??
实例如下:
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;    }
[解决办法]
你要考虑到&&这个符号,从左到右执行,如果左边不对,右边的就不执行了
[解决办法]
探讨

引用:
你要考虑到&amp;amp;&amp;amp;这个符号,从左到右执行,如果左边不对,右边的就不执行了

这个不用说了

问题在于int i=f1()+f2();

[解决办法]
关于运算顺序本身标准除了那几个符号有规定外其他都没规定。
比如:expresion1+expresion2;到底是先计算expresion1还是expresion2,完全取决编译器,当然现在的CPU会有乱序执行可能会自行调整代码顺序。像你这样的问题真的没法给你确切答案

热点排行