Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.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 有人能给我解释一下这段代码的输出吗?_C - Fatal编程技术网

C 有人能给我解释一下这段代码的输出吗?

C 有人能给我解释一下这段代码的输出吗?,c,C,输出为: 无限空间环 有人能给我解释一下这段代码的输出吗 无限空间环 %*d表示格式后的第一个arg表示宽度,这里它是c的地址,被解释为一个巨大的数字,默认情况下,为表示宽度而添加的字符是一个空格 注意,缺少提供打印值的arg normaly 如果我使用这样的有效代码: char c[] = "hello"; printf("%*d", c); #包括 int main() { printf(“%0*d\n”,3,1); 返回0; } 结果是00

输出为:

无限空间环

有人能给我解释一下这段代码的输出吗

无限空间环

%*d
表示格式后的第一个arg表示宽度,这里它是c的地址,被解释为一个巨大的数字,默认情况下,为表示宽度而添加的字符是一个空格

注意,缺少提供打印值的arg normaly


如果我使用这样的有效代码:

char c[] = "hello";

printf("%*d", c);
#包括
int main()
{
printf(“%0*d\n”,3,1);
返回0;
}
结果是001,因为我要求写入宽度为3的“1”,添加的字符是“0”

有人能给我解释一下这段代码的输出吗

无限空间环

%*d
表示格式后的第一个arg表示宽度,这里它是c的地址,被解释为一个巨大的数字,默认情况下,为表示宽度而添加的字符是一个空格

注意,缺少提供打印值的arg normaly


如果我使用这样的有效代码:

char c[] = "hello";

printf("%*d", c);
#包括
int main()
{
printf(“%0*d\n”,3,1);
返回0;
}

结果是001,因为我要求写宽度为3的“1”,添加的字符是“0”

首先我们了解什么是c[]=“hello”;c是一个包含hello的字符数组,但数组数组是一个带内存块的指针。我们创建一个数组意味着我们创建一个指针,它的点hello块内存像c意味着c包含第一个hello块的地址,但printf(“%d”,c)asterisk()符号表示宽度,然后第一个参数是这样的宽度 printf(“%*c”,3,c):它的输出是给定的:h这里是宽度3,并打印一个包含c的字符:现在看看为什么屏幕有无限循环让我们看看printf(“%*d”,c),因为我们知道第一个参数是输出的宽度这里是字符c,当
执行的代码给地址加上宽度,你知道地址太长,有时是负数,那么为什么你的屏幕有太多的空间,而不是无限的,因为你给宽度加上一个地址进一步怀疑注释我,首先我们理解什么是c[]=“你好”;c是一个包含hello的字符数组,但数组数组是一个带内存块的指针。我们创建一个数组意味着我们创建一个指针,它的点hello块内存像c意味着c包含第一个hello块的地址,但printf(“%d”,c)asterisk()符号表示宽度,然后第一个参数是这样的宽度 printf(“%*c”,3,c):它的输出是给定的:h这里是宽度3,并打印一个包含c的字符:现在看看为什么屏幕有无限循环让我们看看printf(“%*d”,c),因为我们知道第一个参数是输出的宽度这里是字符c,当
执行的代码将地址设为宽度,您知道地址太长,有时为负数,那么为什么屏幕上的空间太大而不是无限大,因为您将宽度设为长度,而地址进一步怀疑注释我

您是否检查了printf文档?您可能打算执行类似于printf(“%*s”,10,c)的操作@Jose cplusplus.com可能不是最佳参考。你宁愿链接到C++文档的正确网站,尽管提问者使用C.@安德烈亚斯链接是C11和C++ 11兼容的:[这里列出的是最新的C和C++标准……],但是毫无疑问,有更多的好的引用。你检查过<代码> Prtff < /Cord> doc吗?您可能打算执行类似于printf(“%*s”,10,c)的操作@Jose cplusplus.com可能不是最佳参考。你宁愿链接到正确的C++文档网站,尽管提问者使用C.@安德烈亚斯链接是C11和C++ 11兼容的:[这里列出的是最新的C和C++标准……],但是毫无疑问,有更多的好的引用。一些标点符号会有帮助。它很难阅读和理解。因为英语不是我的母语,一些标点符号会很有帮助。它很难阅读和理解,因为英语不是我的母语
#include <stdio.h>

int main()
{
  printf("%0*d\n", 3, 1);
  return 0;
}