C语言-分支程序设计(关系运算符、逻辑运算符)

关系运算符和表达式

关系运算符:在程序中经常需要比较两个量的大小关系,以决定程序下一步的工作。比较两个量的运算符称为关系运算符。

在C语言中有以下关系运算符:

1.< 小于

2.<= 小于或等于

3.> 大于

4.>=大于或等于

5.== 等于

6.!= 不等于

关系运算符都是双目运算符,具有左结合性。关系运算符的优先级低于算术运算符,高于赋值运算符。在六个关系运算符中,前四个关系运算符的优先级相同,高于后两个关系运算符,后两个关系运算符的优先级相同。

关系表达式的一般形式为:关系式 关系运算符 表达式

例:

a+b>c-d

X>3/2

'a'+1<c

-i-5*j=k+1

都是合法的关系表达式。由于表达式也可以是又是关系表达式,允许出现嵌套的情况,

如:

a>(b>c)

a!=(c==d)

关系表达式的值是“真”和“假”,用“1”和“0”表示。

如:5>0的值为真,即为1。

i=(5>0);    即i=1。

(a=3)>(b=5),由于3>5不成立,故其值为假,即为0。

例:

#include<stdio.h>

void main()

{

char='k';

int i=1,j=2,k=3;

float x=3e+5,y=0.85;

printf("%d,%d\n",   'a'+5<c,    -i-2*j>=k+1);

printf("%d,%d\n",1<y<5,   x-5.25<=x+y);

printf("%d,%d\n",i+j+k==-2*j,   k==j==i+5);

}

分析:在本例中求出了各种关系运算的值。字符变量是以它对应的ASCII码参与运算的。对于含多个关系运算符的表达式,如k==j==i+5,根据关系运算符的左结合性,先计算k==j该式不成立,其值为0,在计算0==i+5,也不成立,故表达式值为0。

逻辑运算符和表达式

C语言中提供了三种逻辑运算符

1.&&与运算

2.||或运算

3.!非运算

与运算符&&和或运算符||均为双目运算符,具有左结合性。非运算符!为单目运算符,具有右结合性。&&和||低于关系运算符,!高于算术运算符。

例:

i=3&&5;  即i等于1

i=0||5; 即i等于1

i==5; 即i等于1 ,!i等于0

按照运算符的先后顺序可以得出:

a>b&&c>d  等价于(a>b)&&(c>d)

!b==c||d<a 等价于((!b)==c)||(d<a)

a+b+c&&x+y<b 等价于(a+b+c)&&((x+y)<b)

逻辑运算的值也为“真”和“假”两种,用“1”和“0”来表示。

其求值规则如下:

1.与运算&&:参与运算的两个量都为真,结果才为真,否则为假。

例:5>0&&4>2

由于5>0为真,4>2也为真,相与的结果也为真。

2.或运算||,参与与运算的两个量只要有一个为真,结果也为真。两个量都为假时,结果为假。

例:5>0||5>8

由于5>0为真,相或结果也就为真。

3.非运算!:参与运算量为真,结果为假;参与运算量为假,结果为真。

例:  !(5>0)结果为假。

虽然C编译在给出逻辑运算值时,以1代表真,0代表假。但反过来在判断一个量是真还是假,以0代表假,以非0的数值代表真。

例:5&&3 的值为真,即为1。

5||0的值为真,即为1。

逻辑运算表达式的一般形式为:表达式 逻辑运算符 表达式

其中的表达式又可以是逻辑表达式,从而组成了嵌套情形。

例:(a&&b)&&c

根据逻辑运算符的左结合性,上式可以写为:a&&&b&&c

逻辑表达式的值是各种逻辑运算的最后值,以1和0分别代表真和假。

例:

#include<stdio.h>

void main()

{

char c='k';

int i=1,j=2,k=3;

float x=3e+5,y=0.85;

printf("%d ,%d\n" ,!X*!Y, !!!X);

printf("%d ,%d\n" ,x||i&&j-3,  i<j&&x<y);

printf("%d ,%d\n" ,i==5&&c&&(j=8),  x+y||i+j+k);

}

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
C语言的词法分析程序主要用于对源程序进行分析,将源程序中的各种单词进行分类提取。根据引用和引用中提供的信息,词法分析程序可以将源程序中的关键字、自定义标识符、整数、界符和运算符进行分析和提取。 关键字包括main、if、else、for、while和int等。自定义标识符是除了关键字之外的标识符。整数是无符号的整数。界符包括大括号{}、小括号()、逗号,和分号;。运算符包括等号=、减号-、乘号*、除号/、小于号<、左移运算符<<、大于等于>=、等于==和不等于!=等。 在编写词法分析程序时,可以使用字符串处理函数,例如gets、strcpy和strcmp等,来从键盘获取源程序输入,并对字符串进行复制和比较操作,以便进行单词的分类和提取。 通过词法分析程序,可以将源程序中的各种单词按照其类型进行分类,并提取出来,从而为后续的语法分析和语义分析提供基础。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [小C语言--词法分析程序](https://blog.csdn.net/wq3699823668/article/details/100599572)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [A - 小C语言--词法分析程序](https://blog.csdn.net/Mercury_Lc/article/details/108685127)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [词法分析源程序c语言编写)](https://download.csdn.net/download/wviyong/1797051)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值