2017-09-02 61 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);'将您带入您的内核代码。 –

相关问题