gpt4 book ai didi

c - 为什么在c中使用%s作为字符变量不执行它下面的语句?

转载 作者:行者123 更新时间:2023-11-30 21:33:17 26 4
gpt4 key购买 nike

#include<stdio.h>
int main()
{
int x=2;

char ch='c';

printf("%i\n",x);
printf("%s\n",ch);
printf("Hello");

return 0;

}

在这段代码片段中,我不小心使用了 %s 来打印 ch 的值,而不是使用 %c,但我发现它并没有打印“Hello”。到目前为止,我知道 %s 接受一个 char 指针,并且它确实寻找一个空字符来终止,但是你能解释一下这里发生了什么吗?我是初学者,很想了解这一点。

最佳答案

printf 中使用不正确的转换说明符会导致未定义的行为。

您将变量 ch 声明为 char 类型。

char ch='c';

但是转换说明符 %s 需要一个 char * 类型的参数,该参数应指向(以 null 结尾的)字符串。因此,ch 'c' 的值被解释为内存地址。

printf("%s\n",ch);

改为使用

printf("%c\n",ch);

否则声明变量ch,如

char *ch = "c";

然后

printf("%s\n",ch);

关于c - 为什么在c中使用%s作为字符变量不执行它下面的语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59898853/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com