回覆列表
  • 1 # 滴逃逃

    可以發現a的值總是會增加1,b的值正好是a的結果的三倍再減2.

    這個運算涉及a, b兩個變數的值的改動,各變數均需考慮。

    以a初值為0為例,則運算結果是a的值為1,b的值也是1。

    a的初值為0時,實驗1

    把實驗資料從擴張到0-100,使a的值分別從100開始取。

    可以發現a的值總是會增加1,b的值正好是a的結果的三倍再減2.

    a的初值為100,99,…,實驗2

    更多資料,實驗2

    當然,還有臨界的,接近資料型別表達能力限度的資料需要測試

    int的資料範圍在+2147483647~-2147483648,即機內碼(補碼)0x7fffffff~0x80000000,而c語言計算超過範圍的數不會報錯。

    第一行結果用補碼錶示即

    a=0x80000000,b=0x7ffffffe

    三個a相加即0x180000000,但是不幸,左邊那個1,放不下,所以結果就是0x80000000(十進位制-2147483648),再減2就是0x7ffffffe(十進位制2147483646)。

    這樣看來之前的想法是對的。

    補碼可以用%x來看,實驗3的圖

  • 中秋節和大豐收的關聯?
  • 如何做好單親家庭的孩子的性格培養?