VC 6 0 中關於自加法和自減法的高分問題

發布 科技 2024-03-08
21個回答
  1. 匿名使用者2024-02-06

    字首自加和字尾自加不同,自加後使用字首自加,如printf("%d,%d",++d,d);這裡雖然計算時間是從右到左,但是在計算到++d的時候,計算機顯式先計算出d的值後再用,字尾self-addition使用附加的one,所以printf("%d,%d",c,c++) 在編譯結果之後,printf 函式使用乙個值 3,因為它是首先使用的,它是編譯器處理的結果。您只能首先詢問設計編譯器的人。

    為什麼C是從左到右計算的)是錯誤的,而不是從左到右計算的。我不相信你可以用這個來嘗試這個,printf("%d,%d,%d,%d,%d",c,c++,c++,c++,c++)

    輸出與3,3,3,3,3相同

    至於編譯器,就要注意自己程式設計了。

  2. 匿名使用者2024-02-05

    printf("%d,%d",c,c++)printf 函式根據指定字串給出的格式對輸出資料進行格式化,因此從左到右輸出。

    這個問題的癥結在於:C++過載運算子,在cout“中,運算子返回ostream&物件,首先在呼叫中呼叫<

  3. 匿名使用者2024-02-04

    第乙個結果是43,我真的不太明白。

    對於第三個,實際上與編譯器有關,後面的 + 一般理解為先執行後計算,前面的 + 一般理解為先計算後執行。

    但是,不建議在實際程式設計中這樣寫,因為這樣會造成理解困難。

  4. 匿名使用者2024-02-03

    簡單地說,cout read 引數是從右到左讀取的,而 printf 是從左到右讀取的。

  5. 匿名使用者2024-02-02

    主要是因為 cout 是從右到左的操作,也就是說。

    第一行本來是先計算a++; 但是,如果先使用 ++ 操作,然後新增,則後乙個操作的輸出為 3

    而前面的 A 實際上是 ++ 的結果;

    在第二行中,同樣如此,cout<<+b “我懷疑你錯了,我呵呵,第三行輸出:第一行當然是 3,第二行是先輸出後加。

    第四行的輸出,很難說,我不確定,因為我認為應該是輸出4,4。

  6. 匿名使用者2024-02-01

    第一行結果解釋如下:

    int a=3;

    cout,所以上面的操作是:6 6 5 5 4 4 3

    結果的第三行解釋如下:

    使用 printf 函式時要記住的另一件事是輸出表列中的計算順序。 不同的編譯系統不一定相同,可以從左到右或從右到左。 Turbo C 是從右到左完成的。 讓我們看一下以下兩個例子:

    示例 1:main(){.}

    int i=8;

    printf("%d %d %d %d %d %d ",++i,--i,i++,i--,i++,i--)。

    示例 2:main(){.}

    int i=8;

    printf("%d ",++i);

    printf("%d ",--i);

    printf("%d ",i++)

    printf("%d ",i--)

    printf("%d ",-i++)

    printf("%d ",-i--)執行結果:

    這兩個程式之間的區別在於它們輸出乙個 printf 語句和多個 printf 語句。 但從結果可以看出,情況有所不同。 為什麼結果不同?

    這是因為 printf 函式從右到左計算輸出表中的數量。 在第乙個示例中,計算最後一項 “-i--”,得到 -8,然後 i 減去 1 後為 7。 那麼“-i++”項值為 -7,然後 i 乘以 1 後為 8。

    那麼“i--”項值 8,然後 i 減去 1 到 7。 然後找到“i++”項得到 7,然後 i 將增加 1 到 8。 然後找到“--i”項,i 先減去 1 然後輸出,輸出值為 7。

    最後,輸出表列中的第一項是“++i”,i 遞增 1,然後輸出 8。

    但是,需要注意的是,儘管評估順序是從右到左,但輸出順序仍然是從左到右,因此結果是如上所述的輸出。

  7. 匿名使用者2024-01-31

    printf("%d\t %d\t %d\t %d\t %d\t %d\t %d", i, +i, i, +i, -i, -i++,i--)

    在編譯器中。

    這與下面的相同。

    printf("%d\t %d\t %d\t %d\t %d\t %d\t %d", i, +i, i, +i, -i, -i, -i);請注意,-when - 的值是給臨時變數的。

    i--;但是,在以下兩句話中,編譯器會在將引數值壓入堆疊後提前執行引數值。

    i++;因此,這種表示式方法盡可能少地使用,它與編譯器有一定的關係,每個編譯器可能不同。

  8. 匿名使用者2024-01-30

    為什麼我和你的想法一樣,我無法解釋。

    但感覺 printf 正在這樣做。

    如果包括

    int main()

    這正是我們的想法。

  9. 匿名使用者2024-01-29

    編譯器問題... 6 6 5 5 4 -4 -5 無 C 輸出是您計算的輸出。

  10. 匿名使用者2024-01-28

    i--這種格式的優先順序比 “,”,低,所以在語句的最後一步執行,vc++ 中運算子的優先順序很重要,房東可以仔細看看書。

  11. 匿名使用者2024-01-27

    其實你不明白逗號運算子和自加規則是一樣的,逗號運算子是運算規則。

    多個表示式用逗號分隔,其中用逗號分隔的表示式的值是單獨解決的,但整個表示式的值是最後乙個表示式的值。

    a=1,b=2 ,c=3;這是逗號表示式 d=(a++,b,c) ; 這是你在 y=1,y+g,y++; 它根本不是逗號運算子,它只是乙個逗號表示式。

    這與相隔 3 次寫作沒有什麼不同。

    自加法和自減法只有在表示式中才有可能。

    沒有單獨取出的命令。

    單獨使用時,y++ 和 ++y 之間沒有區別,當它放在表示式中時就不同了。

    int a=5;

    a++;printf("%d",a);

    輸出的結果是 6

    int a=5;

    a;printf("%d",a);

    輸出仍為 6

    int a=5,b;

    b=++a;

    printf("%d",b);

    輸出的結果是 b=6 a=66

    int a=5,b;

    b=a++;

    printf("%d",b);

    輸出的結果是 b=5 a=6

    事實上,自我強加的問題可以簡單地理解為:

    b=a++;實際上,確實如此。

    b=a;a=a+1

    b=++a;實際上,確實如此。

    a=a+1b=a;

    當 a++ 和 ++a

    不參與其他操作只是 a=a+1。

    此外,僅 y++ y 就是 y=y+1,結果也沒有什麼不同。

    將表示式中的“替換為 ++y”,結果與表示式中的 y= 相同,但表示式不同。

    例如,y=1

  12. 匿名使用者2024-01-26

    y=1,y+5,y++;

    首先,y = 1,y 等於 1。

    y+5,y 的值不變,y 仍等於 1

    y++,y 自加法,y 等於 2

    操作順序在 = 之後。

    所以你 y=1, y+5, y++; 該宣告與您的意思不一致。

  13. 匿名使用者2024-01-25

    Y 當然是 2。 逗號表示式按從左到右的順序計算。

    y=1; // y=1

    y+5 和 y 值無關緊要。

    y++;//y=2

    如果是這樣,s=( y=1,y+5,y++ 那麼 s 的值確實是 1

  14. 匿名使用者2024-01-24

    我將使用一般的程式設計思想,而不是專門的 VC++

    **寫在點選等事件中,只會在點選時執行一次,變數變化不會觸發第二次點選,所以不會第二次執行;

    可以考慮使用定時器觸發對變數的檢測,然後根據變數的值修改顏色,例如,每秒檢測一次變數的值,這樣每秒執行一次;

    似乎沒有找到實時偵聽事件來檢測顏色變化或變數變化的好方法,因此請考慮一下,就好像文字框值更改並且會被監聽一樣。 如果有乙個像 OnColorchanged 這樣的事件(表面上)會很好,但底層實現只不過是乙個時鐘觸發器。

    如果你不明白,就問吧。

  15. 匿名使用者2024-01-23

    您可以嘗試使用計時器在固定時間獲取變數的值,然後重新整理指標的狀態。 或者,如果您寫入修改後的變數的值,即您知道變數何時被修改,則傳送一條訊息以在修改變數值時重新整理指標的狀態。

  16. 匿名使用者2024-01-22

    該指標的實用性是什麼? 如果是控制項,請嘗試 updatadata(false)。 您沒有更新,因為您沒有向指示器傳送訊息以更新顏色。

  17. 匿名使用者2024-01-21

    譚浩強先生的C語言程式設計書有以下程式:

    j=5;q=(++j)+(j)+(j);printf("%d",q);

    結果是 Turbo C 中有 24 個(在同一本書中),VC++ 中有 22 個。

    這意味著在 turbo c 中編譯時,會讀取整行,計算出 3 ++J 後計算 Q;

    vc++ 首先計算前兩個 ++j(加法的第一步的加法),然後加法,然後計算第三個 ++j,然後計算 q 值。

    出於測試目的,請將程式更改為:

    j=5;q=0+(+j)+(j)+(j);printf("%d",q);

    結果保持不變,即 vc++ 仍然是前兩個 ++j(加法的前兩個步驟的加法)。

    更改為 j=5;q=j+(+j)+(j)+(j);printf("%d",q);

    在 Turbo C 中,結果是 32(新增了 4 個 8),在 VC++ 中,結果是 27(6+6+7+8),然後 VC++ 處理加法的第一步。

    完整的猜測如下:

    Turbo C 是通過讀取整行然後計算來編譯的;

    VC++ 是乙個分步計算,類似於帶有堆疊的四規則操作方法,並且前兩個變數不是預讀的。

  18. 匿名使用者2024-01-20

    計算表示式的順序,以便每個編譯器以不同的方式處理這些子表示式,因此第乙個結果是未知的。

    第二個的結果很清楚,字首加得6,減字首得5,結果30。

    第三個的最終結果還是自減法兩次,所以是4,但中間表示式的值也是未知的。

    因此,這種型別的表示式不應該像第一種表示式那樣。

    一三個這樣的,結果會莫名其妙,第二個沒有歧義 另外,虛擬機組上的產品超級便宜。

  19. 匿名使用者2024-01-19

    逗號表示式的順序是先右後左,所以在第乙個 printf 中,表示式 (a--)a--)a--)a 首先處理右 a,所以它輸出 4,然後輸出左邊 (a--)a--)a--)a---a---a-a--a-a

  20. 匿名使用者2024-01-18

    printf() 函式中的引數從右到左輸出。

    printf("%d,%d",(a--)a--)a--)a);例如,先輸出 a,然後計算 (a--)a--)a--) 輸出。

  21. 匿名使用者2024-01-17

    1.在C語言中,後驗自遞增(self-decrease)是指變數的值在語句執行後是自遞增(self-reductiond)。

    2. 示例如下:

    int num=0, s=0;

    while(num++<3)

    執行第乙個 while 時,num=0,執行第乙個 while 後,num=1,在本例中為 s=0+1=1

    第二次執行 while 時,num=1,第二次執行 while 後,num=2,在本例中,s=1+2=3

    當 while 第三次執行時,num=2,在 while 第三次執行後,num=3,在本例中,s=3+3=6

    在第 4 次執行 while 時,迴圈被推出,因為 num=4>3,最後 s=6

相關回答
3個回答2024-03-08

如果你想要源**,我可以做乙個並傳送給你。 >>>More

4個回答2024-03-08

系統搞砸了,讓我們先重新安裝系統。

8個回答2024-03-08

問題的原因在於字串的ANSI和Unicode編碼不同,VC6和VS2003預設使用ANSI編碼,而VS2005預設使用Unicode >>>More

14個回答2024-03-08

我也有胃不好,我發現酸奶和牛奶對胃不好的人有好處,不能吃檸檬之類的強酸性食物,不吃消化後產生大量熱量的食物,乾燥,胃灼熱很不舒服 >>>More

15個回答2024-03-08

沒有發揮,EK只保證在裂隙燈檢查下不會被發現,但是因為雷射切割範圍不是很大,一般只是乙個直徑的圓形區域,雖然比平時的瞳孔尺寸大,但不會影響光的會聚,但是一旦瞳孔放大,瞳孔大小就遠遠大於手術切割範圍。 當瞳孔放大時,視網膜將無法準確聚光(你的視覺感知會是嚴重的眩光,即光源附近有很多帶刺的“光刺”,讓你根本看不見)。 就算你不說你的感受,醫生也不需要太多經驗來檢查你的眼睛,拿乙個小光源,尋找你的眼睛,觀察光在眼底視網膜上的會聚情況,因為手術區域狹窄,視網膜上會出現兩個焦距不同的斑點, 它們不能同時收斂。 >>>More