2017-09-02 86 views
-7
#include <stdio.h> 
//Compiler version gcc 6.3.0 

int main(void) 
{ 

    int a=10; 
    printf("%d"+1,a); 

    return 0; 
} 

輸出。 --- d有沒有人可以告訴我爲什麼發生這種情況c

#include <stdio.h> 
//Compiler version gcc 6.3.0 

int main(void) 
{ 

    #include <stdio.h> 
//Compiler version gcc 6.3.0 

int main(void) 
{ 

    int a=10; 
    printf("%d"+36,a); 

    return 0; 
} 

輸出。 --- p

解釋我爲什麼這種情況發生......每當我改變+1值其打印不同的輸出...

+1

「Int」不是一個類型(雖然'int'是)。無論如何,你的格式很糟糕。請修復。 –

+2

@PySerialKiller這是不正確的。 –

+1

下一次,使用'gcc -Wall -Wextra -g'進行編譯以獲取警告和調試信息。 –

回答

5

代碼的行爲是不確定的。

"%d"+1實際上增加1到const char*指針(字面"%d"將衰減到const char*指針在某些情況下),這實際上把您帶到該字符串字面量d!因此格式化程序printf因此不適合您的參數。

"%d"+36僅僅是打算做非常糟糕的事情確實是,因爲你沒有自己的內存36位來自"%d"

開始難道你的意思是這樣printf("%d", a + 1); &角?

最後,什麼是deuce是Int?你不是說int

+1

而'printf(「%d」+ 36,a);'將您帶入您的內核代碼。 –

相關問題