gpt4 book ai didi

c - 我的 IF 条件表现得很奇怪,HELP C

转载 作者:行者123 更新时间:2023-11-30 15:28:21 26 4
gpt4 key购买 nike

我的 body 状况有问题:

if(pos + strlen(string) > 0){
printf("#");
string = &string[pos*-1];
pos = 0;
}

程序中:

void text_buffer(bool strict, int x, int y, char *string){
if(active_buff){
int pos = active_buff -> width * y + x;

if(pos < 0){
int cnt = strlen(string) + pos;
printf("%d %s", cnt, cnt > 0 ? "true" : "false");

if(pos + strlen(string) > 0){
printf("#");
string = &string[pos*-1];
pos = 0;
}

else
return;
}
if(pos >= active_buff -> length - 1)
return;
char *copy = &(active_buff -> buff[pos]);
if(strict)
for(; x < active_buff -> width && *copy && *string; copy++, string++, x++)
*copy = *string;
else
for(; *copy && *string; copy++, string++)
*copy = *string;
}
}

例如:当我传递长度为 15 个字符的文本“Hello World! 99”并且变量“pos”计算为 -2000 时,那么我提到的条件将为 true。

但是,如果我将 (pos + strlen(string)) 存储到变量“cnt”中,而不是让它在条件下进行计算,那么它的值为“false”。

我不知道,我尝试将 (pos + strlen(string)) 放入 if 条件中的括号中,但仍然没有运气。

最佳答案

如果pos-2000(正如您在问题中所说),那么条件中的表达式:

if(pos + strlen(string) > 0) {...}

将是一个非常大的数字(确切的值取决于size_t在您的平台上的宽度)并且将是true。

这是因为您要添加一个 int 和一个无符号整数(strlen() 返回 size_t),这会导致 无符号整数类型并且始终大于或等于零。

你可以这样做:

if(pos + (int)strlen(string) > 0)  {...} 

关于c - 我的 IF 条件表现得很奇怪,HELP C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26639278/

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