Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有人能告诉我为什么c语言会发生这种情况吗 #包括 //编译器版本gcc 6.3.0 内部主(空) { INTA=10; printf(“%d”+1,a); 返回0; }_C - Fatal编程技术网

有人能告诉我为什么c语言会发生这种情况吗 #包括 //编译器版本gcc 6.3.0 内部主(空) { INTA=10; printf(“%d”+1,a); 返回0; }

有人能告诉我为什么c语言会发生这种情况吗 #包括 //编译器版本gcc 6.3.0 内部主(空) { INTA=10; printf(“%d”+1,a); 返回0; },c,C,输出。--d #包括 //编译器版本gcc 6.3.0 内部主(空) { #包括 //编译器版本gcc 6.3.0 内部主(空) { INTA=10; printf(“%d”+36,a); 返回0; } 输出。--p 请解释为什么会发生这种情况…每当我更改+1的值时,它都会打印不同的输出…代码的行为未定义 %d”+1实际上是在向常量字符*指针中添加1(在某些情况下,%d”文本将衰减为常量字符*指针),这实际上会将您带到该字符串文本中的d。printf格式设置程序因此不适合您的参数 “%d”+3

输出。--d

#包括
//编译器版本gcc 6.3.0
内部主(空)
{
#包括
//编译器版本gcc 6.3.0
内部主(空)
{
INTA=10;
printf(“%d”+36,a);
返回0;
}
输出。--p


请解释为什么会发生这种情况…每当我更改+1的值时,它都会打印不同的输出…

代码的行为未定义

%d”+1
实际上是在向
常量字符*
指针中添加1(在某些情况下,
%d”
文本将衰减为
常量字符*
指针),这实际上会将您带到该字符串文本中的
d
printf
格式设置程序因此不适合您的参数

“%d”+36
确实会做非常糟糕的事情,因为从
“%d”
一开始,36个位置的内存就不属于您

你的意思是不是像
printf(“%d”,a+1);
&c


最后,什么是一个
Int
?你不是说
Int

Int
不是一种类型(尽管
Int
是)。在任何情况下,您的格式都很糟糕。请修复。@PySerialKiller,这是不正确的。下次,使用
gcc-Wall-Wextra-g
编译以获取警告和调试信息。请告诉您的其他同学不要将此发布到SO。并且
printf(“%d”+36,a);
将带您进入内核代码。
#include <stdio.h>
 //Compiler version gcc 6.3.0

 int main(void)
 {

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

    return 0;
 }
#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;
 }