c - 为什么if语句不考虑 "OR(s)"

标签 c if-statement

我正在制作一个应该计算元音的程序。我创建了一个 char 数组,并通过 if 语句检查它的每个元素:

for( i=0 ; sent[i]!='\0' ; i++)
{ 
   if (sent[i] = ='A'||'a'||'E'||'e'||'I'||'i'||'O'||'o'||'u') 
        { vow++; 
        }
}

现在,当我在控制台上输入“我的名字是 Arsal”时,它会输出“16 个元音”,这实际上是上面句子中所有字母字符以及空格的数量。 当我删除“OR(s)”时

if (sent[i] = ='A' /*||'a'||'E'||'e'||'I'||'i'||'O'||'o'||'u' */) 
    { vow++; 
    }

程序在上面的句子中给出了正确的输出“1”。

这是完整的程序:

#include<stdio.h>
#include<conio.h>
#include<string.h>
main()
{
    int vow=0;
    char sent[100];

    printf("Enter sentence ;  \n");
    gets(sent);
    printf("\n");
    int i,j;            
    for(i=0 ; sent[i]!='\0';i++)
    {

        if (sent[i] == 'A'||'a'||'E' || 'e' || 'O' ||'o'||'I'||'i' ||'U' ||'u')
        {
            vow++;
        }
    }
    printf("\n No.of vowels = %d",vow);

    getch();
}   

请告诉我原因。

最佳答案

您的“或”格式不正确...

而不是 if (sent[i] == 'A' || 'a' || 'e' .... 等等 它需要是: if ( 发送[i] == 'A' || 发送[i] == 'a' || 发送[i] == 'e' ... 等等

关于c - 为什么if语句不考虑 "OR(s)",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33716927/

相关文章:

mysql - 如何根据用户的定价计划限制用户添加新驱动程序

if-statement - 如何在列表理解中使用 if-else

java - 如何格式化 3 个条件的逻辑并使用前一个条件?

c - 在C中解析多行字符串

自定义结构返回函数停留在输入上?

我们可以使用 GCC 来处理 C 项目的翻译阶段 1..5

c - 如何在二分查找中使用结构体?

c - 如何为自定义 CPU 创建 C 编译器?

sql - Postgres 嵌套 if in case 查询

c - 我的 else..if 声明有错误