c - 奇怪的 C 行为

标签 c

这里发生了什么?

#include <stdio.h>
int main (void)
{
  int x = 'HELL';
  printf("%d\n", x);
  return 0;
}

打印 1212501068

我预计会出现编译错误。

欢迎解释=)

最佳答案

1212501068 十六进制为 0x48454c4c

  • 0x48H 的 ASCII 代码。
  • 0x45E 的 ASCII 代码。
  • 0x4cL 的 ASCII 代码。
  • 0x4cL 的 ASCII 代码。

请注意,此行为是实现定义的,因此不可移植。一个好的编译器会发出警告:

$ gcc test.c
test.c: In function 'main':
test.c:4:11: warning: multi-character character constant [-Wmultichar]

关于c - 奇怪的 C 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18677083/

相关文章:

c - 函数之间整数的更新

c - 当只有一个损坏的堆栈核心文件时如何找到调用堆栈?

C:统计一个int型数组的实际大小

将参数列表中的 scanf 调用到 printf

c - fwrite 追加,即使文件位置指针位于正确的位置

c - UDP 套接字使用 select()

c++ - 在 header 中的宏中初始化结构体,必须在 C 和 C++ 源代码中工作

c - 在 visual studio 2013 中 ctrl/f7 不起作用

C 中 switch 语句中的 case

c - fork() 和 wait() 调用