c - C 中的换行常量

标签 c char constants c-strings

我的代码:

#include <stdio.h>

int main() {
   const int  LENGTH = 10;
   const int  WIDTH = 5;
   const char NEWLINE ='\n';
   int area;

   area = LENGTH * WIDTH;
   printf("value of area : %d", area);
   printf("%c", NEWLINE);

   return 0;
}

上面的代码输出:

value of area: 50

Process returned 0 (0x0)   execution time : 2.909 s
Press any key to continue.

插入了新行,但是当我更改 NEWLINE="\n"时,尽管知道它是 char 类型,但编译器没有提示错误,也没有打印出换行符。为什么???

另外,我将代码修改为,

#include <stdio.h>

int main() {
   const int  LENGTH = 10;
   const int  WIDTH = 5;
   const char NEWLINE ='\n';
   const char k="hjk";
   int area;

   area = LENGTH * WIDTH;
   printf("value of area : %d", area);
   printf("%c", NEWLINE);
   printf("%c", k);
   return 0;
}

输出仅是计算出的面积和新行,但不打印出 k。我也觉得这很奇怪!可以给点建议吗?

请多多提出建议并指出我的错误,因为我是 C 语言的初学者。

最佳答案

问题是您正在尝试将 string 保存为 char,因此您必须更改 const char k = "hjk"const char k[]="hjk" 并使用 %s 而不是 %c 打印它。

#include<stdio.h>
int main() {
  const int  LENGTH = 10;
  const int  WIDTH = 5;
  const char NEWLINE ='\n';
  const char k[]="hjk";
  int area;

  area = LENGTH * WIDTH;
  printf("value of area : %d", area);
  printf("%c", NEWLINE);
  printf("%s", k);
  return 0;
}

一些说明:如果您保存“string”而未指定它是字符数组 char[],如果您尝试将其打印为 char %c 生成器将发出警告(警告:使用类型为“char [4]”的表达式初始化“const char”的整数转换不兼容的指针),并且如果您尝试将其打印为字符数组 %s(string),您将收到段错误

关于c - C 中的换行常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64819479/

相关文章:

将 int 转换为 char C 公式

c++ - std::vector 使用 push_back 时的语义问题

c++ - 让用户指定数组大小在 XCode 中有效,但在 Visual Studio 中无效

c - div() 库函数的用途是什么?

c - 修剪 C 中字符串的前导和尾随空格

将 double 值转换为 C 中的字符数组

c - 分配新字符后出现奇怪的输出

swift - 如何让标签不断显示 int (swift4)

c - C 程序中的共享常量

c - 为什么 _mm_mfence() 会为 ALL_LOADS 性能事件生成计数?