[英]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.