C 語言中的預自動增量和後自動遞增問題

發布 科技 2024-02-24
28個回答
  1. 匿名使用者2024-01-25

    遞增和遞減運算子優先於大多數運算子,而先例優先於大多數運算子。

    和 ||一旦可以確定整個表示式的值,左邊的表示式就不再執行右邊的表示式,而不是 & 和 |

    所以,這是第一次:

    z = 3 > 0 為真,z --, z = 2,判斷正確。

    x = 0, ++x, x = 1 < 5 為真。

    y--,y = 4

    第二次:z = 2 > 0 為真,z --, z = 1,判斷正確。

    x = 1, ++x, x = 2 < 5 為真。

    y--,y = 3

    第三次:z = 1 > 0 為真,z--,z = 0,判斷正確。

    x = 2, ++x, x = 3 < 5 為真。

    y--,y = 2

    第四:z = 0 > 0 為 false,z--,z = -1,向右跳過。

    x = 3,被跳過,並且值保持不變。

    y = 2,條件為 false,未執行,值不變。

    所以結果是:

    x = 3, y = 2, z = -1

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

    迴圈條件的自增自減義: z-->0 這個判刑在執行後減去 1,+x<5 在執行刑期前 x 加 1 後判定為小於 5

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

    第一次 3>0 &&&1<5 y==4

    第二次>0 &&2<5 y==3

    第三次 1>0 &&3<5 y==2

    第四個 0>0 是 “false”,在 & 之後不再執行,但 z- 仍然要執行,所以結果是 3, 2, -1。 我不知道這個答案是否像你所知道的那樣不同。

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

    注意:Z--在迴圈中,先取z判斷>0,然後z-1=2,++x等於1(++x是先加1)。

    輸出為 1,4,2

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

    多寫幾個自增自減的測試題,然後在電腦上除錯一下,應該就能搞清楚了。

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

    z--:之後執行。

    x:首先執行。

    即第乙個迴圈:z=3>0&&x=1<5

    然後 z--;

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

    while(z-->0&&+x<5) 請注意,當 z--不大於 0 時,不執行 ++x < 5。

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

    計算:從右到左,輸出到 Buffer。

    1. 緩衝區是乙個堆疊。

    2.第一步:將以下“i--”8處理到緩衝區中,i=7。 緩衝區:8<-(指標)。

    第 2 步:將“i++”7 處理到緩衝區中,i=8。 緩衝區:

    78< - 第 3 步:處理“--i”。 8 進入緩衝區,i=7

    緩衝區:878 第 4 步:處理“++i” 首先自增量 1,然後 8 進入緩衝區,i=8

    緩衝區:8878

    3.輸出緩衝區資料(堆疊規則):8878

    此外,自遞增、自遞減,也可能與編譯器有關。

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

    計算:從右到左,輸出到 Buffer。

    1. 緩衝區是乙個堆疊。

    2.第一步:將以下“i--”8處理到緩衝區中,i=7。 緩衝區:8<-(指標)。

    第 2 步:將“i++”7 處理到緩衝區中,i=8。

    緩衝區:7 8< - 第 3 步:處理“--i”。

    8 進入緩衝區,i=7緩衝區:8 7 8 步驟 IV:

    處理 “++i” 先增量 1,然後處理 8 進入緩衝區,i=8緩衝區:8878

    3.輸出緩衝區資料(堆疊規則):8 8 7 8 此外,自增、自減,也可能與編譯器有關。

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

    首先,你的這種用法應該是非法的,或者至少是非常不可取的。 由於算術運算子(如 + 和 - )不指定計算運算元的順序,因此可以首先在不同的編譯器上找到運算元或正確的運算元。 因此,建議不要使用這種不確定的公式。

    這裡你首先找到左邊的運算元,也就是先找到++n表示式的值,因為它是字首自動增量,所以表示式(左運算元)的值是6,n也變為6然後找到右運算值,即表示式 n++; ,因為它是字尾自動增量,所以表示式的值是 6,所以第二個運算元的值是 6,所以結果是 36之後,n 變為 7

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

    scanf 輸入 6[x=6], x>5 為 true,後繼無條件執行 x++[x=7],由於滿足上述條件,printf 輸出 7

    scanf 輸入 4[x=4], x>5 不為 true,則無條件執行 x++[x=5],因為前面的條件不滿足,printf 輸出 5,執行 x--[x=4]。

    因此,當輸入 6 時,我們得到輸出 7; 當您輸入 4 時,您將獲得輸出 5

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

    輸入 6 時,滿足 if 語句,x+1,輸出 7,程式結束;

    輸入 4 時,不滿足 if 語句,x+1,輸出 5,x-1,程式結束。

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

    ++前面表示變數先自遞增,然後執行方程,所以m=++i,先執行++i,i變為9,然後賦值給m;

    最後,它意味著先計算方程,然後變數自增,所以先執行 n=j++,n 賦值給 10,然後 j 自增到 11

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

    ++,意思是先自加,再計算。

    ++之後,表示先計算,再自加。

    所以,m=++i; 首先進行自加法,即 i=i+1; 我=9;

    再手術,m=i; 公尺=9;

    n=j++;先操作,即 n=j; n=10;

    然後自加,即j=j+1; J=11;

    結果是:i=9,j=11,m=9,n=10

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

    有乙個簡單的記憶方法,++在前面,即先自我增加,i在最後,即自我增加後給值; 反之,i先來,即先給出i的值,最後給出++的值,即給出值後自增。

    m=++i;i先自增,自增後為9,再給mn=j++9; 首先將 j 的值 10 給 n,然後自行增加它,j 變成 11,這樣你就得到了結果。

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

    應避免使用自遞增或自遞減表示式作為函式引數,因為不同的編譯系統在計算時沒有統一的方法。 例如;

    i=1;c=fun(i,++i);

    從左到右計算時,c=fun(1,2);

    如果從右到左計算,則為 c=fun(2,2);

    這種問題不需要深入研究,但是在呼叫函式之前應該確定引數的值,然後再將函式作為引數呼叫。

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

    第一段**:

    我是先增加 i 的值,然後再使用它。

    p=f(i,++i);就是先執行++i,再進行函式呼叫。 因為執行++i後,i的值變成了3,所以等價於p=f(3,3);

    你可以在函式 f 中列印出 a 和 b 的值,你會發現 a 和 b 都是 3

    第二段**:

    i++ 是先用 i 的值,再把 i 的值加 1

    所以它等價於先執行 p=f(2,2);

    執行後,將 i 的值更改為 3答案應該是 0

    我懷疑你老師的課件寫錯了,所以我建議你問他。

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

    主要的自加自減法問題,你的記憶方面,給出乙個方法。

    x++ 表示式的值從左到右看 x 的位置,此時 x 在 ++ 的左邊,沒有 ++,所以 x++ 表示式的值是 x 的值。

    反之,++x,x在++的右邊,表示式的值是x+1的值,但無論哪種方式,只要執行完成,x的值就是+1

    x--, x。

    因此,當 6: if(6>5) 和輸出 74: if(4>5) 不滿足時,執行 x--,但此時 x 已經執行了 ++,所以 x 是 5 之前 --

    x--表示式的值為 5

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

    我以前不明白這個問題,但現在我會了。 不明白真的很煩人。 首先,i=8,m=++i,前面是+1,然後取值,然後是m=9,此時i是+1之後運算的結果,i=,n=j++

    最後,是先取值,再取+1; 那麼n先的值是j+1之後的值,j=11

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

    在表示式中,++和標題一樣,在變數前面,它是自增和減法,然後取變數值。 變數之後,先取變數的值,然後自增自減。

    例如:j=i++; 這意味著 i 的值首先分配給 j,然後 i 是自遞增的。 這也是以下**的含義。 您可以使用此想法進行跟進。

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

    i++ 和 ++i 在 C 語言中都是自動增量,但它們以不同的順序自增量。 ++i 表示 I 遞增 1 然後參與其他操作,而 i++ 表示 I 參與操作,i 的值遞增 1。

    第四行被賦值 j, j=3,然後 i+1=4

    第 5 行 printf 也被計算出來,認為執行了 i++ 操作 j=3,輸出為 i=4,然後計算出 i=i+1=5

    在第 6 行中,i+1=5+1=6,然後 j=6

    在第 7 行中,輸出 i+1=6+1=7,輸出 i=7J 不變或 6,第 6 行與第 1 行相同。

    i- 1 一次輸出 6 個,j 也是 6,然後 i 減去 1 次 = 5;

    最後兩行道理也是留給房東去思考的,其實printf最好不要把計算步驟放進去,很容易忽略。

    如果您不明白,請詢問。

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

    這真的是關於編譯器的。

    以下是 VS2019 執行的結果:

    下面是 clion 執行的結果:

    Clion 的警告是 x++ 是沒用的,檢查後,它說 x++ 應該放在賦值操作之後,所以它應該放在賦值操作之後。

    x = x +(i++)

    x++;所以正確的結果應該是 6,3

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

    結果取決於編譯器,不同的編譯器會有不同的結果,6,3

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

    它應該是 b 7 3

    x++ 是 4,i++ 是 3

    4+3 是 7,應選擇 B

    算術水平高於其他運算子

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

    我們很樂意為您解答!

    答案是5,3。

  26. 匿名使用者2023-12-31

    因為要看具體的編譯軟體,不同的便衣軟體都有自己的規則,使用者往往被蒙在鼓裡。 即使使用者自己了解某個變音符號軟體的操作規則,編寫的程式也缺乏可移植性和可讀性。 如果你在其他編譯軟體上編譯它,你會得到不同的結果,所以說像這樣模稜兩可的語句的最好方法是遠離它,把它分成兩個或多個語句。

  27. 匿名使用者2023-12-30

    (3*3+3*3)=18;

    證明。

    我的意思是我先自我加法,然後參與運算,--我先減法再參與運算;

    i++ 表示 i 先參與運算,然後加自身,--i 表示 i 先參與運算,然後減去自身;

    在整個方程(i++*i+i--*i)中,i在參與運算之前加了一次,然後又減去自身(++i,--i),所以i的值沒有變化,它仍然是3,運算後,i的值再加後減去(++i,--i),所以i的值仍然沒有變化, 並且仍然等於 3

    所以計算結果是 3

    操作完成後,i=3;

  28. 匿名使用者2023-12-29

    記住一句口頭禪:先增加,然後給予。

    第乙個和最後乙個值是指操作員位置。

    增加和充實是指首先要採取什麼行動。

    示例:i++;

    賦值後,運算元在後面,所以先進行賦值操作,進行自加。

相關回答
18個回答2024-02-24

if(expression) 如果 expression=0 為 false,則表示式不等於 0 為 true。 >>>More

14個回答2024-02-24

在 VisualStudio 2013 中編寫和除錯 C 語言程式的步驟: 1.開啟 [檔案] - 新建 - 專案以開啟“新建專案”視窗。2. 在[模板]、[名稱]、[位置]和[解決方案名稱]中選擇[Visual C++] Win32控制台應用程式,可以根據需要填寫。 >>>More

14個回答2024-02-24

對於如此大的階乘,C語言中的基本變數無法計算和溢位。 >>>More

11個回答2024-02-24

當具體迴圈數(條件)不明確時使用 while,當指定迴圈數(條件)時使用 for >>>More

7個回答2024-02-24

1.運用數學規則,寫出判斷素數。

功能。 2 從 2 迭代以確定每個數字是否為質數。 >>>More