我的字符串是XAbc,第一个字符是我的IF函数中的X.如果first = X symbol = 0,但我是printf符号,它给了我symbol = 2.
#include <stdio.h>
#include <string.h>
int main(void)
{
checkformula("XAbc");
}
void checkformula(char* formula)
{
char first = formula[0];
int symbol;
printf("first character is %c\n",first);
if (first = 'E')
{
symbol = 2;
} else if (first = "~")
{
symbol = 1;
} else if (first = 'X'){
symbol = 0;
} else if (first = 'A')
{
symbol = 3;
} else if (first = '(')
{
symbol = 4;
} else {
symbol = -1;
}
printf("symbol is %i\n", symbol);
输出:
第一个字符是X. 符号是2
答案 0 :(得分:3)
在if
语句中,您需要测试与==
运算符的相等性。实际上,您正在使用赋值运算符=
,它在左侧修改变量的值,并为if
提供“true”值,只要该字符在右侧不是ASCII NUL('\0'
)字符 - “零”值是false
,非零值是true
在C中。
答案 1 :(得分:1)
checkformula
的原型。在main之前放置函数的原型。 应该是这样的:
void checkformula(char *);
=
语句中使用了赋值运算符if
而不是==
运算符。 应该是
if (first == 'E') {...}
答案 2 :(得分:0)
如果陈述错误。你不是故意要使用&#34; ==&#34;不是&#34; =&#34;运营商?你正在进行任务而不是比较。
if (first == 'E')
{
symbol = 2;
} else if (first == "~")
{
//etc