C語言中的奇怪結果,為什麼

發布 科技 2024-06-17
8個回答
  1. 匿名使用者2024-01-29

    int c=9,d=0;

    c=c++%5;這裡相當於c=c%5,c++; 所以 c=5。

    d=c; //d=c;所以 d=5。

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

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

    c=c++%5;這句話的運算可以寫成:

    1、c=c%5;此時,c = 4

    2. C++,這就是 C=5 的原因。

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

    首先,c = c++%5

    c=9,因為c++的++是後來計算的,所以就變成了c=9%5,c等於4,然後c再加起來,所以是5

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

    除二樓外,上述陳述均正確。

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

    c = c++ 5;

    至於編譯器,該語句不依賴於評估順序,我在 bcb 和 vc 中得到的結果為 5,在 gcc 中得到的結果為 4。

    a[i] = i++;這也與特定的編譯器有關,在不同的構建環境中,結果可能會有所不同。

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

    這種說法在不同的語境下會產生不同的結果,不適合移植。 而且,這樣的陳述不容易閱讀,應該單獨寫"c=c%5;c++"

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

    這裡 p 是乙個指標,依次指向陣列中的每個元素。 p=a 將 p 指向第乙個元素 a[0],或 p=&a[0],對於每個 p++,指標 p 可以遞增以指向每個後續元素。 最後乙個陣列元素是 a[9],當 p 指向 a[9] 時,p-a==9(在本例中為 p==&a[9],a==&a[0])。

    因此,迴圈條件應為 p-a<10 或 p-a<=9。

    順便說一句,指標 s 總是用於指向最大值元素,因此每當 *p>*s 時,s 都會更新為 p(即程式中的 s=p; )

    第乙個 null:&a[i] 或 a+i

    第二個 null:p-a

    第三個空的:>

    第四個 null:*s

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

    p 和 s 都指向陣列 a 的第乙個位址,每次迴圈時加 p,p-a 是減去 p 的次數,差值是 p 偏移的次數,陣列長度為 10

    最多可偏移 10 倍。

相關回答
14個回答2024-06-17

main()

char c1='a',c2='a',*p1,*p2; >>>More

10個回答2024-06-17

總結。 C語言的輸出可以通過執行**並檢視終端顯示的結果來分析,也可以使用gdb等除錯工具進行分析。 >>>More

17個回答2024-06-17

房東將 4 個輸出位址的 %s 修改為 %x 後,看看結果,再想一想,或許能理解。 >>>More

20個回答2024-06-17

它在書中寫錯了。

無限迴圈的原因是 j 被定義為無符號字元,所以它總是正數,而 for 迴圈不能跳出來,所以將 j 定義為 char 就足夠了,而不是 char。 >>>More