当前位置: 首页 > news >正文

C/C++运算

C语言字符串的比较

#include <string.h>
int strcmp( const char *str1, const char *str2 );例如:
int  ret;
ret = strcmp(str1,  str2);返回值:
str1  <  str2时, 返回值< 0(有些编译器返回 -1)
str1  >  str2时, 返回值> 0(有些编译器返回 1)
str1  等于  str2时, 返回值为0
#include <stdio.h>
#include <string.h>
#include <Windows.h>int main(void) {
char addr[32];
int ret;
printf("美女,你是哪里人?");
scanf("%s", addr);
if (strcmp(addr, "湖南") == 0) 
{printf("美女,我们是老乡啊!\n");
} 
else 
{printf("美女,你和我的同学是老乡啊!\n");
}
system("pause");
return 0;
}

其它数据类型的比较运算

char, int, short, float, double等数据类型,都可以使用比较运算:

大于:>、大于或等于:   >=、小于:<、小于或等于: <=、不等于: !=、等于:==(注意:不是 = )

比较运算的结果:(逻辑值):结果为“真”:true、结果为“假”:false

逻辑运算

C++与C语言完全相同。与或非

逻辑与  &&

都为真,逻辑与才是真。只要有一个是假, 逻辑与就是假。相当于“而且”

应用场景:当需要两个条件都满足时,就使用逻辑与

特别注意:条件1  &&  条件2;当条件1为真时,才去判断条件2,当条件1为假时,就不再判断条件2。

逻辑或 ||

只要有一个是真, 结果就是真。都为假时,结果才是假。相当于“或者

应用场景:只需要满足任意一个条件时,就使用逻辑或

特别注意:条件1  ||  条件2;当条件1为真时,就不再判断条件2,当条件1为假时,才判断条件2

逻辑非 !

是”单目运算符”, 即:只有一个操作数,相当于“不”

应用场景:当需要不满足某条件时,就使用逻辑非

特别注意:逻辑非,只对一个条件进行运算!是一种“单目运算符”

位运算

问题:把地址为0x80040的寄存器的最低4位设置为0110

解决方案:使用位操作,内存的基本单元是字节, 一个字节有8位。先低4位清零,再赋1.

位与 &        对应位, 都是1,  结果才是1

// 00001000

// 00000011

// 00000000

cout <<  " 8 & 3 = " << (8 & 3) << endl;  

位或 |        对应位, 都是0, 结果才是0、只要有一位是1, 结果就是1

位非 ~       取反

异或^        对应位不同, 结果才是1

<< 左移        右边的位用 0 来填充, 移动超出左边边界的位则直接抛弃;向左移动 n个位置,就等同于乘以 2的n次方。只适用于: int/short/long/char 等定点数类型(float/double浮点数类型不能使用)

>> 右移        如果左操作数是无符号类型,则左边多出来的位用 0 来填充。如果左操作数是有符号类型,则左边多出来的位用 符号位(最高位) 来填充。向左移动 n个位置,就等同于除以 2的n次方。只适用于: int/short/long/char 等定点数类型(float/double浮点数类型不能使用)

算术运算

+

x = 5 + 3;

-

x = 5 - 3;

*

x = 5 * 3;

/

x = 10 / 3;

两个整数相除,结果取整数部分除数不能为0(也不要为0.0)

%

取余

x = 10 % 3;

//结果为1

只有整数和char类型可以做%运算

float和double类型不能做%运算

赋值运算

x = 10;  //把x的值设置为10, 把10写到变量x中。

x = 10 + a;

左边必须是变量,“优先级”很低,只比 ","(逗号元素符)高。

复合赋值运算

x += 10;    //  x = x + 10

x -= 10;    //  x = x - 10

类的还有: *= ,    /=,  %= 等。

自增自减运算

后缀自增

x = i++;

x = i;

i=i+1;

先取值

再自增(自减)

后缀自减

x=i--;

x =i;

i=i-1;

前缀自增

x = ++i;

i=i+1;

x=i;

先自增(自减)

再取值

前缀自减

x = --i;

i=i-1;

x = i;

逗号运算符

优先级最低。

#include <stdio.h>
int main(void) {
int x;
// 先计算 x = 3+5,  再计算3*5
x = 3+5, 3*5, 10/5;
printf("x=%d\n", x);  //x=8//取最后一个表达式的值,作为整个“逗号表达式”的值
x = (3+5, 3*5, 10/5);  
cout  <<  x  <<  endl; //x=2
return x;
}

三目运算符

条件 ?  表达式1 :表达式2

如果条件为真,就取表达式1作为整个表达式的值。如果条件为假,就取表达式2作为整个表达式的值

#include <iostream>
#include <Windows.h>
using namespace std;int main(void) {
int salary;
scanf("%d", &salary);
cout <<  (salary > 30000 ? "老鸟" : "菜鸟") << << endl;
system("pause");
return 0;
}

使用多个运算符时的优先级

一共有15个级别!不需强制记忆,只需要掌握以下常用的优先级:

最高优先级:( )和[ ]

最低优先级:逗号表达式

倒数第二低优先级:赋值和复合赋值(=, +=,  -=  ...)

x = a+ b*c;

! > 算术运算符 > 关系运算符 > && > || > 赋值运算符

(3 + 4 < 5  &&  6 > 7)  ||  (8 > 7);

相关文章:

  • SMT贴片:现代电子制造的核心工艺
  • CASAIM与京东方达成合作,CASIAM IS智能联动AOI漏光检测攻克屏幕翘曲度及漏光检测难题
  • MuJoCo 画出机械臂末端轨迹进行可视化(附代码)
  • 编程技能:调试01,调试介绍
  • Summary
  • ES和MySQL概念对比
  • 向量数据库
  • 解锁元生代:ComfyUI工作流与云原生后端的深度融合
  • 【设计模式】观察者
  • RabbitMQ 为什么引入 Exchange 的概念, 交换机有什么作用.
  • QML与C++:基于ListView调用外部模型进行增删改查(性能优化版)
  • 【Leetcode-Hot100】最大子数组和
  • 【教程】如何使用Labelimg查看已经标注好的YOLO数据集标注情况
  • C++| 深入剖析std::list底层实现:链表结构与内存管理机制
  • VTK知识学习(51)- 交互与Widget(三)
  • 小程序获取用户总结(全)
  • ArrayList vs LinkedList,HashMap vs TreeMap:如何选择最适合的集合类?
  • CEPH配置优化建议
  • 小程序css实现容器内 数据滚动 无缝衔接 点击暂停
  • AtomNet:在极端MCU约束下基于算子设计微型模型
  • 马云再次现身阿里打卡创业公寓“湖畔小屋”,鼓励员工坚持创业精神
  • 视频丨习近平同普京会谈:共同弘扬正确二战史观,维护联合国权威和地位
  • 多人称华为手机忽现拍照模糊疑存缺陷,售后回应:主摄像头故障
  • 国家主席习近平同普京总统举行大范围会谈
  • 泉州一家婚介机构广告牌越南新娘七天闪婚领证?市监部门介入
  • 暴雨及强对流天气黄色预警已发布!南方进入本轮降雨最强时段