<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                文章:[不借助if、switch等語句求兩個數較大的一個](http://blog.csdn.net/u013074465/article/details/42684559) 交換兩個數在排序算法中用的很多:[冒泡排序中](http://blog.csdn.net/u013074465/article/details/44339187) 、[插入排序中](http://blog.csdn.net/u013074465/article/details/42043665)等等。正常的交換兩個數是借助一個變量tmp: ~~~ void Swap(int &a, int &b) { int tmp = a; a = b; b = tmp; } ~~~ 在面試題中有這樣的題目“不借助第三個變量,交換兩個數” ~~~ //A方法 void Swap(int &a, int &b) { a = a + b; b = a - b; a = a - b; } ~~~ ~~~ //B方法 void Swap(int &a, int &b) { a ^= b; b ^= a; a ^= b; } ~~~ 上述的兩種方式中,A方法缺點:中當數a或b較大時 a = a + b會發生越界。 方法B的原理: ~~~ a = a ^ b; b = a ^ b; //那么 b = a ^ b = (a ^ b) ^ b = a ^ (b ^ b) = a ^ 0 = a,即將a賦值給了b a = a ^ b; //那么 a = a ^ b = a ^ (a ^ b) = (a ^ a) ^ b = 0 ^ b = b,即實現了將b賦值為a ~~~ 以上兩種方法的共有bug: ?????? 當a、b指向的是同一個數時,即Swap(a, a)時,會發生錯誤,將a置為了0。但是a等于b的情況下(即a和b不是指向同一個地址時)是不會錯誤的。 解決方法: 為Swap函數增加判斷語句:當a和b相等的時候不交換。 ~~~ //A方法 void test(int &a, int &b) { ?if (a != b) { ??? ?a = a + b; ??? ?b = a - b; ??? ?a = a - b; ??? ?cout << "OK " << endl; ?} } //B方法 void Swap(int &a, int &b) { if (a != b) { ?a ^= b; b ^= a; a ^= b; }} ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看