Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
237 views
in Technique[技术] by (71.8m points)

C++ if statement notation - Is this equivalent?

I'm 99% sure this won't work but that remaining 1% is bothering me

    int x;

    //is this if statement

    if(x == 1, 5, 7)
    {
    //do something here
    }
    //equivalent to this if statement

    if((x == 1) || (x == 5) || (x == 7))
    {
    //do something here
    }
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

No it's totally not equivalent.

if(x == 1, 5, 7)

calls the comma operator, which will effectively end up in the last value because of , has the lowest precedence:

if(7)

since unfolding with parenthesis should look like

if(((x == 1), 5), 7)

while

if((x == 1) || (x == 2) || (x == 7))

checks if x equals either 1, 2 or 7.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...