gpt4 book ai didi

c & 指针加法中的字符数组

转载 作者:太空宇宙 更新时间:2023-11-04 05:13:39 25 4
gpt4 key购买 nike

我的导师给我以下功能。所以不要因为歧义而责怪我哈哈

void step_step_step(char *first, char *second, char *third)
{
if (third[3] == second[2] + 8 && second[2] == first[1] + 8)
printf("8: Illinois\n");
else
printf("8: ERROR\n");
}

我尝试以这种方式调用函数:

char *p8_1 = (char*) malloc(sizeof(char)*11);
char *p8_2 = (char*) malloc(sizeof(char)*11);
char *p8_3 = (char*) malloc(sizeof(char)*11);
p8_1[9] = 'u';
p8_2[2] = p8_1[9];
p8_2[10] = p8_1[9];
p8_3[3] = p8_2[10];
step_step_step(p8_1, p8_2, p8_3);

而且一直打印错误。我在这里做错了什么?我不明白为什么当我的其他解决方案起作用时它不起作用:

p8_2[2] = p8_1[1] + 8;
p8_3[3] = p8_2[2] + 8;
step_step_step(p8_1, p8_2, p8_3);

最佳答案

可能的运算符优先级错误:

更改为:if ((third[3] == second[2] + 8) && (second[2] == first[1] + 8))

The wiki article on 'Order of operations'详细说明评估优先级。

如果您无法在眨眼间向某人解释,某些表达式将按什么顺序求值 - 您应该使用足够多的括号,这无关紧要(因为没有顺序优先级需要考虑)或者它是分句的分隔方式一目了然。

编辑:

仔细一看,我意识到有些可疑的事情正在发生。您没有增加任何指针。如果你是,你会做类似if ((third[3] == second[2 + 8]) && (second[2] == first[1 + 8]))

关于c & 指针加法中的字符数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18665834/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com