作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试将 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/
我是一名优秀的程序员,十分优秀!