簡體   English   中英

以下用C語言編寫的程序的輸出是什么?

[英]What will be the output of the following program written in C?

我是C語言的新手,但我能理解為什么下面的代碼將輸出顯示為'A'

讓我困擾的一件事是printf語句中的數組名稱p。編譯器如何處理該p?

在第5行之后,如何用字符數組“%c \\ n”替換p

我知道這是一個愚蠢的問題,非常抱歉發布此兔子。

誰能幫助我理解其背后的概念?

 line1:      #include<stdio.h>
 line2:      int main()
 line3:      {
 line4:          char p[]="%d\n";
 line5:          p[1]='c';
 line6:          printf(p,65);
 line7:          return 0;
             }

printf()的第一個參數是const char* ,其中包含格式說明符。 更常見的是將其視為字符串文字:

printf("%c\n", 65);

但是使用包含字符串的變量是合法的。

的分配p[1] = 'c'的改變d ,以c在緩沖器p ,導致字符A (如65為十進制值A )被寫入到標准輸出(作為%c指示printf()打印字符,而不是%d將打印數字值)。

您不會替換整個數組,而只是替換數組偏移量為#1的字符(第二個字符)。 您將其替換為“ c”,使內容變為“%c \\ n”,當用作格式字符串時,將整數65格式化為大寫拉丁字母A

在第6行中:
printf(p,65);
將更改為
printf("%c\\n",65); “ A”的Ascii值為65。
http://www.asciitable.com/

解釋如下:

char p[]="%d\n";

執行完上述操作后,P將包含->“%d \\ n”

 line5:          p[1]='c';

在這里,當您更改基於零的索引的第一個字符時,P現在將為“%c \\ n”。

line6:          printf(p,65);

這等效於:

printf("%c\n",65)

要么

printf("%c\n",'A')

因此,您得到A的輸出

     #include<stdio.h>
       int main()
       {
          char p[]="%d\n";   #This is stored at p[1]
          p[1]='c'           # d is replaced by c
          printf(p,65);      # p is taken as p[1] and is replaced by "%c\n"
           return 0;
         }

輸出:A#ASCII值65

如果將值設置為66,則輸出將為“ B”,依此類推。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM