我是C的新手。这段代码在Flyport模块上运行并在他们自己的IDE上编译,但我认为对于熟悉C的人来说,我的错误应该很容易找到。
尽管几乎改变了一切,我仍然无法编译这些代码,我做错了什么?
char string_serial[50]="starting Value";
if (string_serial[0] = "*")
{
UARTWrite(2,"First Char OK");
UARTWrite(2,"\r\n");
else
UARTWrite(2,"First Char NOT OK");
UARTWrite(2,"\r\n");
}
如果不明显我试图检查数组中的字符0是否为*。
由于
答案 0 :(得分:6)
if / else条件的语法错误
语法应为
if(condition)
{
}
else
{
}
对于您的特定代码,它应该是
if (string_serial[0] == '*')
{
UARTWrite(2,"First Char OK");
UARTWrite(2,"\r\n");
}
else
{
UARTWrite(2,"First Char NOT OK");
UARTWrite(2,"\r\n");
}
=
运算符是赋值,它赋值(成功时返回true)。您需要的是==
(用于比较)。
也可以使用单引号作为字符,如上面的代码所示。
答案 1 :(得分:2)
您应该使用"*"
周围的单引号替换双引号,并使用==
:
if (string_serial[0] == '*')
用单引号括起来的单个字符表示“一个字符”;用双引号括起来的单个字符表示“一个字符的C字符串”。
单=
表示“作业”;双==
表示“比较”。
答案 2 :(得分:1)
''
适用于单个char
,但""
适用于字符串。以下行应该有效。
if (string_serial[0] == '*')
答案 3 :(得分:1)
如果结构不正确
试试这个:
char string_serial[50]="starting Value";
if (string_serial[0] == '*')
{
UARTWrite(2,"First Char OK");
}
else {
UARTWrite(2,"First Char NOT OK");
UARTWrite(2,"\r\n");
}
您需要将=
更改为==
,并从else block
if block