ΚΧЯ 2021-04-02 18:57 采纳率: 50%
浏览 20
已采纳

关于define的问题

  1. #include <stdio.h>
  2.  
  3. #define NL '\n'
  4.  
  5. int main()
  6. {
  7.         printf("Line1NL");
  8.         printf("Line2NL");
  9.  
  10.         return 0;
  11. }

复制代码


运行一下你会发现并不会换行……
这是因为 NL 被放在字符串中,就仅被当做普通字符表示,define 并不会去处理它

正确做法如下:

  1. #include <stdio.h>
  2.  
  3. #define NL '\n'
  4.  
  5. int main()
  6. {
  7.         printf("Line1%c", NL);
  8.         printf("Line2%c", NL);
  9.  
  10.         return 0;
  11. }

对于以上的两个程序,我还是不能很好地理解为什么在第一个程序中不能换行

  • 写回答

2条回答 默认 最新

  • CSDN专家-三岁丫 2021-04-02 19:07
    关注

    怎么说呢,主要是为了防止歧义或避免一些不必要的问题才这么设计的。因为字符串不在那么单纯,如果以后真的有人这么干,可能出问题都不知道哪里出得问题。甚至还会带来很多严重的 bug。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 有偿,学生成绩信息管理系统
  • ¥15 Arduino电机和openmv连接异常
  • ¥15 Arcgis河网分级报错
  • ¥200 java+appium2.1+idea
  • ¥20 请帮我做一个EXE的去重TXT文本
  • ¥15 工价表引用工艺路线,应如何制作py和xml文件
  • ¥15 根据历史数据,推荐问题类型
  • ¥15 需要仿真图,简单的二阶系统实例
  • ¥15 stm32光控照明仿真
  • ¥15 使用人工智能的方法生成满足一定统计参数要求的随机数序列