奇怪的C輸出,奇怪的C程式,為什麼會這麼輸出?

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

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

    #include

    #include

    void main()

    void copy_string (char *from,char *to);

    char from="i am a teacher";

    char to="you are a student";

    2:you are a student

    printf("copy string a to string b:"); //3:copy string a to string b:

    copy_string(from,to);

    7:i am a teacher

    printf("從 %x",&from); //8:!!輸出是 from 陣列的內容。

    printf("從 %x",from);9:輸出是 from 陣列的內容。

    system("pause");

    void copy string(char* from,char *to) 將 from 和 to 陣列的第乙個位址傳遞給 *from *to。

    int i=0;

    while(from[i]!='\0')

    to[i]=from[i];i++;

    to[i]='\0';

    printf("從 %x",&from);4:輸出可以判斷為from陣列的位址。

    printf("從 %x",from);//5:i am a teacher

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

    為什麼這裡用%s作為位址輸出,沒意義,修改為%d

    printf("從 %d",&from); //8:!!輸出是 from 陣列的內容。

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

    很差。

    容易造成記憶體溢位。 小心自己。

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

    我以前不知道,但現在我已經學會了。

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

    首先,當您使用 scanf 輸入陣列 a1 和 a2 的內容時,您錯了。 由於它是陣列輸入,因此在使用 scanf 語句時應新增 for 迴圈語句。

    int i;

    for(i=0;i<5;i++)

    scanf("%s%s",a1,a2);

    您使用單個 scanf("%s%s",a1,a2)實際上只是輸入了a1[0]和a2[0]的值。

    再次指出,您在程式末尾錯過了乙個 }

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

    如果更改編譯器也沒關係。

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

    是的,這是乙個字串輸出,因為陣列名稱是陣列的第乙個位址,而 puts(a1) 等效於 printf("%s", *p);如果 p 是指向陣列 a1 的指標,

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

    這就是 i++ 和 ++i 之間的區別。

    i++ 是在執行外部操作後加 1

    另一方面,++i 在執行外部操作之前加 1(外部操作具有優先順序)。

    p = (i++)i++)i++)

    外部運算是三個變數中間的兩個加號,這樣就會有5+5+5 i加1; i 自我加 1 ; iself-plus i=8。

    q = (+j) +j) +j);

    第乙個加號的兩個內部運算是++j、++j,等式為:

    q=7+7+ (j);

    q=14+8=22;

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

    為什麼要為這樣的問題而煩惱? 你也說過,不同的編譯器有不同的結果,這意味著即使是編寫編譯器的大師也無法確定它是否正確。 所以,沒有必要糾結於此,現實中誰想寫這樣的程式就應該抽他!

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

    它應該是 15、24、8、8。

    p = (i++)i++)i++) 等價於 p = (i) +i) +i); i++;i++;i++;

    q = (+j) +j) +j);相當於 i++; i++;i++;p = (i) +i) +i); i++;i++;i++;

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

    呵呵,我以前和你一樣迷茫。 後來,我問了別人,得到了乙個大致的了解:

    cout 的輸出以流輸出的形式完成,它為 cout 配置緩衝區。

    如果緩衝區未滿且沒有人為重新整理緩衝區(請使用 cout<

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

    printf 比 cout 快得多。

    如果你做比賽,那麼建議使用printf,程式更快。

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

    1 是所有頭檔名。

    CSTDIO 正在使用命名空間 std; 以後只能用,內容是一樣的,但是是不同的檔案。

    至於直接包含stdio,我沒見過。

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

    沒有本質的區別,這只是寫作習慣的問題,stdio cstdio只是以C++,C的格式顯示

    此外,是否支援 CSTDIO,STDIO 的格式由編譯器決定。

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

    在 C 語言中,標頭是主要的。

    在後來的C++語言中,C只是C++的乙個子集,在C++中,不再建議使用C庫,但為了保護現有的**,仍然支援原來的標頭檔案。

    其中。 H是用來區分C和C++的,Stdio是C++的標頭檔案,宣告了使用命名空間std,cin,cout分別放在空間std,這是C的標頭檔案,其中包含一些輸入和輸出功能。

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

    char c[9] 用作字串,只能容納 8 個字元,第 9 個單位用於字串終止符。

    您可以使用更大的字元陣列。 char c[10] 或 char c[20]; 不要害怕太多的單位。

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

    定義 b[4]。

    使用中 使用中 b[4] 下標已溢位。

    任何未知錯誤都可能發生。

    d[4] 同樣如此。

    解決這個問題,看看。

相關回答
9個回答2024-06-08

#include

#include >>>More

2個回答2024-06-08

當它發出奇怪的聲音時,它通常不是由您的計算機卡引起的嗎? 你能不能告訴我? >>>More

14個回答2024-06-08

main()

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

17個回答2024-06-08

在計算機中,沒有原始或反向程式碼。

輸入的值,無論是正值還是負值,都會被編譯並儲存為補碼。 >>>More

20個回答2024-06-08

反饋給樓主,我這裡的系統是win7,Flash播放器版本是,瀏覽器是搜狗,瀏覽IE核心和高速核心下正常,原圖解像度為800*600,比360p更清晰。 >>>More