(七十一)关系表达式
来源:互联网 发布:mysql触发器 动态表名 编辑:程序博客网 时间:2024/05/21 17:52
关系表达式的重点是关系运算符,有以下几个。
关系运算符
意义
>
大于,即前者大于后者(以下略)
<
小于
==
等于,“=”的意思是赋值
!=
不等于
>=
大于等于
<=
小于等于
优先级:
关系运算符的优先级,比 运算符 的优先级低。
例如: a+1 > b; 先进行计算的是a+1,然后判断a+1>b是真还是假
C-风格字符串的表达式判断:
当我们判断一个变量是否等于1时,我们可以用 a==1;来进行判断,假如等于,返回true,假如不等于,返回false。
但是在C-风格字符串中,是不能这么做的。
原因在于,字符串的变量名,实际上是字符串的内存地址。
假如一个指针指向这个字符串内存地址,那么这个指针可以和这个字符串的变量名相等。
但是若两个字符串之间进行判断,那么就不用用“==”来进行判断了。
应使用函数strcmp(字符串1,字符串2)来进行判断,
假如相同,则返回值为0,
假如不等,则返回值为1.
注意,这个函数内的字符串1和字符串2,实际上是内存地址。即,这个函数通过内存地址来判断内存地址的值是否相等。
上代码:
#include<iostream>int main(){using namespace std;char aa[6] = "hello";char bb[6] = "aello";for (int i = 1;strcmp(aa, bb);i++)//strcmp(aa,bb)判断aa和bb是否相同,相同返回0,不同返回1。//因为for的循环判断语句,返回值为true(1)则继续执行循环——即不同,返回值为false(0)则停止执行循环——即两个字符串相同{bb[0] = char(char('a') + i - 1);//char('a')是字符a,他以数字编码形式储存在内存中,因此可以和int类型相加,更改为int('a')是等价的//外面的char()是将里面的数字编码,以字符的形式显示出来,并赋值给bb字符串的第一个成员cout << bb << endl;}system("Pause");return 0;}
输出:
aellobellocellodelloeellofellogellohello请按任意键继续. . .
总结:
①可以这么理解:
strcmp(字符串1,字符串2)根据内存地址,判断字符串是否不同。
是不同,返回true——即1
是相同,返回false——即0
是不同,则继续执行循环语句
是相同,则不执行循环语句。
——不这样理解好别扭,这样理解也好别扭。
②按照说明,strcmp需要头文件<cstring>,但实际中,我没引用也可以正常使用啊?
③变种:
strcmp(字符串1,字符串2)==0;
这个表达式的意思就是,判断字符串是否相同:
相同,前面部分为0,表达式为1——继续执行循环语句
不同,前面部分为1,表达式为0——停止执行循环
和不带==0的刚好相反。
不带“==0”的,相同,停止执行。——用于需要相同字符串时
带“==0”的,相同,继续执行。——用于需要不同字符串时
string类字符串判断:
和C-风格字符串判断相比,要简单的多,可以直接用“==”或者“!=”关系判断符来判断两个string类字符串是否相同。
例如:
for (int i = 1;aa!=bb;i++)
只需要将前面的代码strcmp(aa,bb)改为aa!=bb;即可。
因为满足不等于,则执行循环,满足等于,则不执行循环。
- (七十一)关系表达式
- 飛飛(七十一)阅读程序
- 技术分享连载(七十一)
- 深度学习(七十一)darknet 源码阅读
- 表达式(字符表达式、关系表达式)
- LeetCode OJ算法题(七十一):Simplify Path
- three.js 源码注释(七十一)extras/geometries/CylinderGeometry.js
- Android Api Demos登顶之路(七十一)Graphics-->Cliping
- PyGobject(七十一)Gtk.Widget之Gtk.Entry
- 问题七十一:环境光遮蔽(Ambient Occlusion)
- 一个屌丝程序猿的人生(七十一)
- 七十一章
- 关系表达式
- 关系表达式
- 第五天(循环和关系表达式)
- el表达式(关系运算符)
- 七十一、基础框架(二十九)文件操作-文件操作柄,NSFileHandle这类物件
- Unity3D研究院之Machine动画脚本自动生成AnimatorController(七十一)
- error: aggregate value used where an integer was expected
- CCITT标准CRC-16计算C源代码
- cocos2d-js环境搭建
- HashMap集合中装入ArrayList集合
- 磁盘分区类型--文件系统标志 (详细英文资料)
- (七十一)关系表达式
- 图片显示错误url rewrite module error
- 一款App,从设计稿到切图(Android篇)
- Python 爬虫学习系列教程----目录
- BZOJ2653 middle
- 随机产生20个数(10以内的)放入arraylist中
- android自定义ProgressBar 修改进度条样式 出现setProgress无效问题
- ===item填充导致layout显示和想要的不同
- Map,List,Json(fastJson)试验