2025年C语言-逻辑运算

C语言-逻辑运算1 逻辑运算符 C 语言有 3 种逻辑运算符 其逻辑运算对象可以是关系表达式或逻辑表达式 逻辑运算的结果只有 真 或 假 目数 单目 双目 运算符 amp amp 名称 逻辑非 逻辑与 逻辑或 逻辑非 逻辑非运算符的对象如果为 真 那么结果为 假 若对象为 假

大家好,我是讯享网,很高兴认识大家。

1、逻辑运算符

C语言有3种逻辑运算符,其逻辑运算对象可以是关系表达式或逻辑表达式,逻辑运算的结果只有“真”或“假”。

目数 单目 双目
运算符 ! && ||
名称 逻辑非 逻辑与 逻辑或

逻辑非(!):逻辑非运算符的对象如果为“真”,那么结果为“假”;若对象为“假”,则结果为“真”。
逻辑与(&&):逻辑与运算符的两个逻辑运算对象只要有一个为“假”,那么结果就是“假”;两个都为“真”,结果才为“真”。
逻辑或(||):逻辑或运算符的两个逻辑运算对象只要有一个为“真”,那么结果就是“真”;两个都为“假”,结果才为“假”。

2、逻辑运算符的使用

其中 ! 是单目运算符,&&|| 是双目运算符,C语言中单目运算符的优先级是高于双目运算符的。所以逻辑非(!)的运算优先级高于关系运算符。而逻辑与(&&)和逻辑或(||)的优先级低于关系运算符。

逻辑运算符经常是与if()语句搭配使用的,用它可以连接关系表达式,例如表示x是否在闭区间[-1,1]中可以表示为if (x>=-1&&x<=1),表示x>=-1且x<=1那么此表达式的值才为“真”,才会执行if下的语句。

:逻辑运算符的使用会出现短路的现象,例如当x=-2时,那么if (x>=-1&&x<=1)这个语句的第一个语句x>-1就为“假”,此时就可以判断出这个逻辑语句的结果一定就为“假”,程序就不会执行后面一句判断x<=1,如果后面有改变x值的语句,例如if(x>=-1&&x++<=1),那么此时x++就不会执行,即执行完此if语句后,x的值仍然为-2,。请注意此种现象!

例1:判断输入的字符是否为英文字母

从键盘输入一个字符,判断是不是英文字母。

#include <stdio.h> int main(void) { 
    char ch; printf("Enter a character:"); ch = getchar(); /*变量ch接收从键盘输入的一个字符*/ if ((ch>='a' && ch<='z') || (ch>='A' && ch<='Z')){ 
    /*判断是否为英文字符,含大小写*/ printf("It is a letter.\n"); } else { 
    printf("It is not a letter.\n"); } return 0; } 

讯享网

运行结果:

Enter a character:u
It is a letter.


讯享网

Enter a character:5
It is not a letter.

例2:统计英文字母和数字字符

输入一个正整数n,再输入n个字符,统计其中英文字母、数字字符和其他字符的个数。

讯享网#include <stdio.h> int main(void) { 
    int digit, i, letter, n, other; /*定义3个变量分别存放统计结果*/ char ch; digit = letter = other = 0; /*置存放统计结果的3个变量的初值为零*/ printf("Enter n:"); scanf("%d", &n); getchar(); /*读入并舍弃换行符*/ printf("Enter %d characters:", n); for (i=1; i<=n; i++){ 
    ch = getchar(); if ((ch>='a' && ch<='z')||(ch>='A' && ch<='Z')){ 
    letter++; /*如果ch是英文字母,累加letter*/ } else if (ch>='0' && ch<='9'){ 
    digit++; /*如果ch是数字字符,累加digit*/ } else { 
    other++; /*ch是除字母、数字字符、以外的其他字符,累加other*/ } } printf("letter = %d, digit = %d, other = %d\n", letter, digit, other); return 0; } 

运行结果:

Enter n:7
Enter 7 characters:tys23*&
letter = 3, digit = 2, other = 2

注: 1、该段程序注意digit = letter = other = 0;这种写法,这是因为赋值运算符的结合方向是从右向左,其等价于以下代码:

 other = 0; letter = other; digit = letter; 

这样所以的变量都会置0。但是一般不建议使用这种写法,因为这样可读性不好。
2、注意scanf()函数后的getchar();这一句程序,因为scanf()函数输入数据时要以回车结束,而回车本身也是一个字符,所以会被getchar();这一句给读到,这句话读到后什么也没做,相当于舍弃掉了scanf()最后输入的回车字符。

小讯
上一篇 2025-03-27 13:50
下一篇 2025-02-05 23:04

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/63388.html