gpt4 book ai didi

c - 如何调试这个基本的 OR 程序?

转载 作者:行者123 更新时间:2023-11-30 20:11:16 25 4
gpt4 key购买 nike

我是 C 编程初学者。

我编写了一个程序,由于其“OR”功能而无法运行。这是一个有效的代码片段:

#include <stdio.h>
#include <stdlib.h>

int main()
{
char* englishTest = 'yup';

if ( (englishTest == 'yup') || (englishTest == 'yep') || (englishTest == 'yas') || (englishTest == 'yah') )
{
printf("You may pass \n");
}
else
{
printf("You shall not pass \n");
}
return 0;
}

最佳答案

这应该是C,而不是脚本语言。

这段代码有两个问题:

char englishTest = 'yup';

englishTest 声明为 charC 中是整数类型。它只能容纳一个字符,但您尝试在其中存储三个字符。

您的意思可能是:

char englishTest[] = "yup";

请注意方括号表示 array (of chars) 。可以选择在括号之间指定数组大小。此处未指定,编译器使用可以容纳 initialization 所用字符串的最小值。 (“是的”)。这个最小值是 4:"yup" 中有 3 个字符,但是 C strings终止于 the NULL character ('\0') .

代码中的第二个问题是字符串的比较。字符串不是 C 中的原始类型。它们是字符数组。使用 comparison operators 直接比较两个字符串不会产生您期望的结果。它比较内存中存储两个字符串的地址,而不是它们的字符。

C 标准库提供了多个用于比较两个字符串的函数。最简单string comparison functionstrcmp() 。如果两个字符串相同,则返回 0;如果 dictionary order 中第一个字符串位于第二个字符串之前,则返回负值。否则为负值。

您的比较代码应该是(注意 C 字符串括在双引号 "" 中):

if (strcmp(englishTest, "yup") == 0 || strcmp(englishTest, "yep") == 0 ||
strcmp(englishTest, "yas") == 0 || strcmp(englishTest, "yah") == 0)


附: OR 运算符 (||) 不会破坏这里的任何内容。

关于c - 如何调试这个基本的 OR 程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41342213/

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