Weird XOR swap behavior while zeroing out data

前端 未结 3 1986
感情败类
感情败类 2021-01-21 07:31

Thanks Doug. Here\'s the fix:

void swap(int& a, int& b) {
    if (&a == &b) // added this check to ensure the same address is not passed in
              


        
3条回答
  •  没有蜡笔的小新
    2021-01-21 08:26

    In addition to the existing answers, I'll just add that if you're going to do a test before swapping then you might as well change:

    if (&a == &b) // added this check to ensure the same address is not passed in
        return;
    

    to:

    if (a == b) // check that values are different
        return;
    

    This will handle the case where &a == &b and also the case where a == b, which may save some unnecessary swapping.

提交回复
热议问题