C 逻辑运算符

学习C - C逻辑运算符

这些运算符可用于确定变量或值之间的逻辑。

操作符含义
&&
||
!

与运算符&&

逻辑与运算符&&,是组合两个逻辑表达式的二进制运算符,即两个计算为true或false的表达式。

考虑这个表达式:

test1 && test2

如果表达式test1和test2的值都为true,则此表达式计算结果为true。

如果操作数中的任一个或两个都为false,则操作结果为false。

使用&&运算符的明显地方在if表达式中。这里有一个例子:

if(age > 12 && age < 20) {
  printf("You are a teenager.");
}

仅当age的值为13到19(含)时,才执行printf()语句。

当然,&& 运算符可以是bool变量。

您可以用以下语句替换上一条语句:

bool test1 = age > 12;
bool test2 = age < 20;

if(test1 && test2) {
  printf("You are a teenager.");
}

和运算符的真值表

Xy结果
truetruetrue
truefalsefalse
falsetruefalse
falsefalsefalse

使用逻辑与运算符


#include <stdio.h>
#define PERIOD "."
int main(void)
{
    char ch;
    int charcount = 0;
    
    while ((ch = getchar()) != PERIOD)
    {
        if (ch != """ && ch != "\"")
            charcount++;
    }
    printf("There are %d non-quote characters.\n", charcount);
 
    return 0;
}

上面的代码生成以下结果。

或运算符||

逻辑或运算符||,检查两个或多个条件中的任何一个为真。

如果||的任一个或两个操作数运算符是真的,结果是真实的。

有当两个操作数都为false时,结果为false。

以下是使用此运算符的示例:

if(a < 10 || b > c || c > 50) {
  printf("At least one of the conditions is true.");
}

只有在三个条件a <10,b> c或c> 50中的至少一个为真时,才执行printf()。

您可以使用&&和||逻辑运算符组合,如下面的代码片段:

if((age > 12 && age < 20) || savings > 5000) {
   printf ("hi.");
}

您可以用以下语句替换上一条语句:

bool over_12 = age > 12;
bool undere_20 = age < 20;

bool age_check = over_12 && under_20;
bool savings_check = savings > 50;

if(age_check || savings_check) {
   printf ("Hi.");
}

或运算符的真值表

Xy结果
truetruetrue
truefalsetrue
falsetruetrue
falsefalsefalse

非运算符!

逻辑非运算符,由!表示。

!运算符是一元运算符,因为它只适用于一个操作数。

逻辑非运算符反转逻辑表达式的值:true变为false,false变为true。

if( !(age <= 12) )
{
  printf("Hi.");
}

非运算符的真值表

X结果
truefalse
falsetrue

例子

为了说明如何在C代码中使用逻辑运算符,可以编写这段代码。


  #include <stdio.h> 
  int main() { 
     int a,b; 
     a = 5; 
     b = 8; 
      
     printf("%d \n",a>b && a!=b); 
     printf("%d \n",!(a>=b)); 
     printf("%d \n",a==b  || a>b); 

     return 0; 
  } 

上面的代码生成以下结果。

例2

以下代码显示如何测试字母大小写。


#include <stdio.h>
int main(void)
{
  char letter = 0;                               // Stores an input character

  printf("Enter an upper case letter:");         // Prompt for input
  scanf(" %c", &letter);                         // Read the input character

  if((letter >= "A") && (letter <= "Z"))         // Verify uppercase letter
  {
    letter += "a"-"A";                           // Convert to lowercase
    printf("You entered an uppercase %c.\n", letter);
  }
  else
    printf("You did not enter an uppercase letter.\n");
  return 0;
}

上面的代码生成以下结果。

例3

下面的代码使用ctype.h中的函数:


    #include <stdio.h>
    #include <ctype.h>
    int main(void)
    {
        char letter = 0;                          // Stores a character
        printf("Enter an uppercase letter:");     // Prompt for input
        scanf("%c", &letter);                     // Read a character
        if(isalpha(letter) && isupper(letter))
           printf("You entered an uppercase %c.\n", tolower(letter));
        else
           printf("You did not enter an uppercase letter.\n");
      return 0;
    }

上面的代码生成以下结果。