簡體   English   中英

為什么printf的這種錯誤語法不會在c中產生錯誤?

[英]Why this wrong syntax of printf is not producing error in c?

我已經使用這種語法來打印一些變量n。 我知道語法是錯誤的,但無法了解幕后情況。 它甚至沒有創建錯誤。 里面的主要方法:

int fac,p=1,n,i;
printf("Enter the value of n \n");
scanf("%d",&n);
printf("The factorial is \n %d"+n);

我在最后一行使用了+n ,這不是正確的語法。 輸入為1輸出為:

he factorial is
1

輸入為5輸出為:

actorial is
1

有人可以幫我弄清楚幕后發生的事情嗎? 編譯器如何理解打印功能中的+n 輸出1從何而來?

字符串文字只是char數組的指針。 當您將int添加到指針時,您將執行指針算術並移動指針。 在這里,您的階乘為4,因此您將指針上移了4個字符,因此丟失了"The "

%d將從堆棧中取出以下值並將其解釋為int 在您的情況下,這恰好是1

暫無
暫無

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

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