awu122423 发表于 2020-10-30 17:48:51

为什么用双引号就会得到 Line1 Line20

#include <stdio.h>
#define NL "\n"
int main()
{
      printf("Line1%c"NL);
      printf("Line2%c"NL);

      return 0;
}
为什么用双引号就会得到
Line1
Line20

求大佬求解!!
谢谢!!!

liuzhengyuan 发表于 2020-10-30 17:59:20

本帖最后由 liuzhengyuan 于 2020-10-30 18:04 编辑

%c 占位符如果没有指定内容,默认为空字符串
通过宏定义,设置了 NL 为换行(\n)

awu122423 发表于 2020-10-30 18:03:34

对不起是我描述的问题不清楚,我想知道为什么用#define NL "\n"后面Line2就会多加一个0但是用#define NL '\n'就没有这个0了

liuzhengyuan 发表于 2020-10-30 18:06:37

awu122423 发表于 2020-10-30 18:03
对不起是我描述的问题不清楚,我想知道为什么用#define NL "\n"后面Line2就会多加一个0但是用#define NL '\ ...

我这里使用 gcc 编译测试了一下,发现两者的后面都没有加 0

awu122423 发表于 2020-10-30 18:08:04

啊!这....

liuzhengyuan 发表于 2020-10-30 18:11:58

awu122423 发表于 2020-10-30 18:08
啊!这....

你要点击帖子左下角【回复】,使用其功能,对方才能看见你的回复

awu122423 发表于 2020-10-30 18:18:36

liuzhengyuan 发表于 2020-10-30 18:11
你要点击帖子左下角【回复】,使用其功能,对方才能看见你的回复

原来是这样啊!谢谢!

awu122423 发表于 2020-10-30 18:21:47

liuzhengyuan 发表于 2020-10-30 18:06
我这里使用 gcc 编译测试了一下,发现两者的后面都没有加 0

谢谢!我找到原因了因为用双引号会在第二个打印语句里多一个\0的转义字符

老鲇鱼_123 发表于 2021-12-1 15:32:02

liuzhengyuan 发表于 2020-10-30 18:11
你要点击帖子左下角【回复】,使用其功能,对方才能看见你的回复

牛逼
页: [1]
查看完整版本: 为什么用双引号就会得到 Line1 Line20