我正在尝试将 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/