学习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.");
}
和运算符的真值表
| X | y | 结果 |
|---|---|---|
| true | true | true |
| true | false | false |
| false | true | false |
| false | false | false |
使用逻辑与运算符
#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.");
}
或运算符的真值表
| X | y | 结果 |
|---|---|---|
| true | true | true |
| true | false | true |
| false | true | true |
| false | false | false |
非运算符!
逻辑非运算符,由!表示。
!运算符是一元运算符,因为它只适用于一个操作数。
逻辑非运算符反转逻辑表达式的值:true变为false,false变为true。
if( !(age <= 12) )
{
printf("Hi.");
}
非运算符的真值表
| X | 结果 |
|---|---|
| true | false |
| false | true |
例子
为了说明如何在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;
}
上面的代码生成以下结果。


国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码








