Le 23 juin 2014 à 15:20, cstrato <cstr...@aon.at> a écrit : > Dear all, > > Since many years the following C++ code does compile on ALL Bioconductor > servers (Linux, Windows, Mac) without any warnings: > > Int_t numsels = 0; //number of selected entries > ... > for (Int_t i=0; i<size; i++) { > numsels = (arrMask[i] == 1) ? ++numsels : numsels; > }//for_i
This is confusing. I would write the loop body like this: numsels += (arrMask[i] == 1) ; or preferably using the STL: Int_t numsels = std::count( begin(arrMask), end(arrMask), 1 ) ; or some other variation of this, i.e. perhaps you don’t have a C++11 compiler, so perhaps one of these depending on what is arrMask: Int_t numsels = std::count( arrMask.begin(), arrMask.end(), 1 ) ; Int_t numsels = std::count( arrMask, arrMask + size, 1 ) ; Romain > Even on the recently added release server 'zin2' Linux (Ubuntu 12.04.4 LTS) > the above code compiles w/o warnings. > > However, on the new development server 'zin1' Linux (Ubuntu 12.04.4 LTS) I > get suddenly the following warning message: > > Found the following significant warnings: > XPSPreProcessing.cxx:3026:56: warning: operation on ‘numsels’ may be > undefined [-Wsequence-point] > > Interestingly, both servers do not only run the same version of Ubuntu, but > also the same version of the C++ compiler, i.e. g++ (Ubuntu/Linaro > 4.6.3-1ubuntu5) 4.6.3, and use the same flags, see: > http://bioconductor.org/checkResults/2.14/bioc-LATEST/zin2-NodeInfo.html > http://bioconductor.org/checkResults/devel/bioc-LATEST/zin1-NodeInfo.html > > My question is now, why do I suddenly get the compiler warning? > > The reason why I ask at R-devel and not Bioc-devel is that it may not only be > a Bioc question, since I found the following links: > http://c-faq.com/expr/seqpoints.html > http://stackoverflow.com/questions/16838884/why-i-got-operation-may-be-undefined-in-statement-expression-in-c > > I am not sure if I understand the meaning, but until now I have never got any > warning from any compiler the I have used (including MS Visual C++). > > Do I really have to replace '++numsels' with 'numsels+1'? > > Best regards, > Christian > _._._._._._._._._._._._._._._._._._ > C.h.r.i.s.t.i.a.n S.t.r.a.t.o.w.a > V.i.e.n.n.a A.u.s.t.r.i.a > e.m.a.i.l: cstrato at aon.at > _._._._._._._._._._._._._._._._._._ > > ______________________________________________ > R-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel