【发布时间】:2022-01-09 09:56:13
【问题描述】:
我的代码有问题,这两个条件不成立。事实上,我有 Python 背景,它们似乎很适合我。我希望任何人都可以帮助我解决这个问题。 感谢您的宝贵时间!
char cArray[12] = "Hello World";
char* pcVal = &cArray[2];
if (cArray[2] == "l"){}
if ((*pcVal) == "l"){}
【问题讨论】:
-
注意:C 程序员通常写
char *pcVal而不是char* pcVal。当您编写类似char* aptr, bptr;的内容时,这一点变得很重要(其中bptr旨在成为指向char 的指针,但实际上被声明为char,因为星号绑定到aptr而不是char)。跨度> -
如果你启用编译器警告,编译器会因为你比较不兼容的类型而对你大喊大叫。
-
@Cheatah 是的,尽管 C 语言的新手并不太了解警告。
-
无论如何,关键是 Python 确实没有任何与 char 等价的东西。相反,它只是有一个 1 字符的字符串,当然 is 可以与另一个字符串相比较,而 C 有一个真正的 char 类型,它不能与 char 数组(又名字符串)相比较。当然,Python 也支持多种字符串引用类型(单、双、三)。
-
@jarmod 这就是我提到它的原因,因为老实说,没有人应该在没有这些警告的情况下进行编译,除非他们确切地知道自己在做什么。