c,如何在 if 语句中使用 char 变量?

标签 c

我正在尝试将 char 变量与 if 语句中的字符串进行比较。 这是我的代码:

int main(void) {
  char x[2] = "i";
  if(x[2] == 'i'){
    printf ("x is i\n");
  }
  return 0;
}

if 语句最终结果为 false,并且程序不执行任何操作。我做错了什么?

最佳答案

C 中的数组的起始索引为 0,结束索引的大小为减 1。在 x 的情况下,这意味着有效索引为 x[0]x[1]

通过索引x[2],您将读取超出数组末尾的内容。这会调用 undefined behavior ,在这种情况下表现为得到意想不到的结果。幕后可能发生的情况是,您正在读取恰好位于在堆栈上分配的 x 之后的任何值。

由于 x 包含字符串 "i",它由字符 'i' 后跟一个空字节 (0) 组成,相反,您需要 x[0]

关于c,如何在 if 语句中使用 char 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48570176/

相关文章:

c - GBA 开发 - 仿射 Sprite 每 90 度暂停一次,BG 不受影响

c - 使用C语言在嵌入式系统中进行可靠的字符串连接

c++ - 是否有 C++ 标准库包装器或 pthread_sigmask 的替代品?

c - 如何将二进制数组转换为单个变量?

c - 如何在实模式下使用 C 字符数组

c - 按字母顺序打印列表中的某些单词

Pro-C 中的 SQL 查询失败,错误为 :02115

c - 在 C 中使用 zlib

javascript - 如何将 Canvas 像素数组传递给 C++ 代码并将其保存为 jpeg?

c - 如何使用英特尔内在函数从 256 个 vector 中提取 8 个整数?