c/c++:算术运算符,赋值运算,逻辑运算,比较运算,三目运算,逗号运算,数据类型转换

news2024/12/26 11:19:12

c/c++:算术运算符,赋值运算,逻辑运算,比较运算,三目运算,逗号运算,数据类型转换

2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,此时学会c++的话,
我所知道的周边的会c++的同学,可手握10多个offer,随心所欲,而找啥算法岗的,基本gg
提示:系列c++学习的基础和高阶知识,用于公司生产实践中,实实在在的公司部署产品要用的,因为c++速度快,
而java和Python速度慢,自然往硬件里面部署算法啥的,都得用c++或者c,因此本科学的c很重要,后来的Python或者java就没有那么重要了,
c/c++系列文章:
【1】c++:c语言优缺点,visual studio2019如何新建项目,写hello world程序
【2】c/c++:gcc安装,gcc编译hello world文件,system函数调用系统命令,sleep函数
【3】linux下gcc的编译过程和功能,预处理,编译,汇编,链接,.c预处理为.i文件.s文件.o文件.exe文件
【4】c/c++:windows平台下依赖的动态库,c底层是汇编语言,程序断点调试,反汇编,vs快捷键
【5】c/c++:数据类型,常量变量,标识符,有符号整型,无符号unsigned,字符类型,字符串类型,实数类型,浮点型,科学计数法
【6】c/c++:2进制、8进制、10进制、16进制和进制之间的转换,c语言输出匹配格式%
【7】c/c++:原码,反码,补码和常见的数据类型取值范围,溢出
【8】c/c++:类型限定符,printf输出格式,putchar,scanf,getchar


文章目录

  • c/c++:算术运算符,赋值运算,逻辑运算,比较运算,三目运算,逗号运算,数据类型转换
    • @[TOC](文章目录)
  • c/c++:算术运算符
  • 赋值运算符=,等号是==
  • 比较运算符
  • 逻辑运算符:与或非
  • 运算符优先级
  • 三目运算符?:
  • 逗号运算符,
  • 数据类型转换
  • 总结

c/c++:算术运算符

在这里插入图片描述
位运算是很重要的。

后续重点才说

在这里插入图片描述
加减乘除咱们不多说

*乘法
/除法
除法看你打印什么?%d的话,它就取整
%f才会有小数点吧
不对,是定义数据类型为double才会有小数

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>

//很多库后续调用各种函数都需要用的

void f14(void)//这同一个工程下面函数还不让重名呢
{
	int a = 10 / 20;//自动就取整了

	printf("%d\n", a);
	printf("%f\n", 10 / 20);//还是自动取整了

	double b = 10;
	double c = 20;
	printf("%f\n", b / c);
}


int main(void)
{
	f14();

	system("pause");
	return 0;
}

在这里插入图片描述
取余运算,好说
除模取余
10%3
商3,取余为1
好说

++自增++

–自减–
=++a,先a+1,再赋值给前面的等号
=a++,先赋值给前面的等号,再a+1
在这里插入图片描述


void f15(void)//这同一个工程下面函数还不让重名呢
{
	int a = 10;

	int b = ++a;//a=11,a要先自己增加哦,b=11

	printf("%d\n", a);
	printf("%d\n", b);
}

在这里插入图片描述

`
void f15(void)//这同一个工程下面函数还不让重名呢
{
int a = 10;

//int b = ++a;//a=11,a要先自己增加哦,b=11
int b = a++;//b=10,然后才是a自己增加哦,a=11

printf("%d\n", a);
printf("%d\n", b);

}`在这里插入图片描述
看懂了吗,++a是a先自增
a++是a后自增

同理
–a也是a先自减
a–是a后自减


void f16(void)//这同一个工程下面函数还不让重名呢
{
	int a = 10;

	int b = --a;//a=11,a要先自己减哦,b=11
	//int b = a--;//b=10,然后才是a自己减哦,a=11

	printf("%d\n", a);
	printf("%d\n", b);
}

在这里插入图片描述

void f16(void)//这同一个工程下面函数还不让重名呢
{
	int a = 10;

	//int b = --a;//a=11,a要先自己减哦,b=11
	int b = a--;//b=10,然后才是a自己减哦,a=11

	printf("%d\n", a);
	printf("%d\n", b);
}

在这里插入图片描述

赋值运算符=,等号是==

在这里插入图片描述
a+=10等价于
a=a+10
加减乘除模都一样

比较运算符

在这里插入图片描述

==等于
!=不等于
在这里插入图片描述

逻辑运算符:与或非

逻辑非!取反
在这里插入图片描述
0为假
非0为真【1到无穷大都是真】


void f17(void)
{
	int a = 1;
	printf("%d\n", !a);
}

在这里插入图片描述
逻辑与&&好说,全真才真,有假全假
逻辑或||好说,全假才假,有真全真
在这里插入图片描述

运算符优先级

最好是()来区分
其他的都是容易混淆的
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
整体来说,记住特定,由高到地
[]
()
++自增,
–自减
强转类型
sizeof

先乘除
取余
后加减

逻辑运算

三目运算符,条件运算

赋值运算

逗号,最次
那些写代码不加小括号的是垃圾程序员。
那些写代码不加小括号的是垃圾程序员。
那些写代码不加小括号的是垃圾程序员。

最好写小括号,否则别人怎么记忆。

三目运算符?:

表达式1?表达式2:表达式3

表达式1:是判别条件表达式
如果为,三目运算取值为表达式2
如果为,三目运算取值为表达式3

void f18(void)
{
	int a = 10;
	int b = 20;

	int flag = a > b ?  1 : 2;
	//试问a>b吗?是真,则flag取1
	//否则,flag取2

	printf("%d\n", flag);
}

在这里插入图片描述
这再python和java中,我已经用很多了
哟其实java中练习数据结构与算法时搞的

void f18(void)
{
	int a = 10;
	int b = 20;

	int flag = a > b ?  1 : 2;
	//试问a>b吗?是真,则flag取1
	//否则,flag取2

	printf("%d\n", flag);
	printf("%s\n", a > b ? "a>b" : "a<b");
}

在这里插入图片描述
很简单的,当初第一次我学习这个玩意时还不熟悉,不习惯,经常记不住。

在这里插入图片描述
写代码加括号!!
不要漏掉括号,否则优先级很难看
虽然理论上没错,但是我们是人,写代码方便给人看
不是装逼

在这里插入图片描述

逗号运算符,

写逗号,的程序员
没有意义,就是炫技,仅此而已,装逼而已


void f19(void)
{
	int a=10, b=20, c=30;

	int x = (a = 1, b = 2, c = 5);
	//我的理解是不是a=1赋值,然后b=2,c=5已经赋值好了
	//然后a赋值给x,然后是b,然后是c
	//,因为逗号最晚发生,所以赋值一定是逗号最后的

	printf("%d\n", x);
	printf("%d\n", a);
	printf("%d\n", b);
	printf("%d\n", c);
}

在这里插入图片描述
调换bc位置


void f19(void)
{
	int a=10, b=20, c=30;

	int x = (a = 1, c = 5, b = 2);
	//我的理解是不是a=1赋值,然后b=2,c=5已经赋值好了
	//然后a赋值给x,然后是b,然后是c
	//,因为逗号最晚发生,所以赋值一定是逗号最后的

	printf("%d\n", x);
	printf("%d\n", a);
	printf("%d\n", b);
	printf("%d\n", c);
}

在这里插入图片描述

数据类型转换

隐式类型转换,编译器自动悄悄干
或者赋值时,自动转

int r = 3;
float s = 3.14*r*r;//面积求出来是double,最后隐式转换为float

显示类型转换,
在这里插入图片描述
double表达范围最大了
long和float类似长
无符号大于有符号范围

void f20(void)
{
	int a = 321;
	char ch = a;

	printf("%c\n", ch);//超过128了哦,gg


在这里插入图片描述
char最大范围128
你321
不行哦

这样就65是咋来的呢
321搞成二进制,放入char
8bit,7位有效位,最高是0
在这里插入图片描述

丢了1
懂了没

所以为啥说范围小的类型,可以转范围大的
而范围大的没法转范围小的,会出错

强制数据类型的格式:
(目标数据类型)待转换的变量/表达式

void f20(void)
{
	float a = 3.6;
	int weight = 4;

	double price = a * weight;

	printf("价格%lf\n", price);//

}

在这里插入图片描述
要不你抹零

void f20(void)
{
	float a = 3.6;
	int weight = 4;

	double price = a * weight;

	printf("价格%d\n", (int)price);//

}

在这里插入图片描述


void f20(void)
{
	float a = 3.6;
	int weight = 4;

	double price = a * weight;
	int p2 = (int)(a * weight);

	printf("价格%d\n", (int)price);//
	printf("价格%d\n", p2);//

}

在这里插入图片描述
后面的括号不加的话,强制类型转换 的优先级要比 加减乘除 高哦

往往用于函数调用时,实参给形参传递值时,需要匹配数据类型,强行搞一把

后续malloc返回值是void*
它是泛型
任意一种数据即可,你可以赋值给*p地址,我们就需要强转它【malloc表达式】为整型指针类型。
在这里插入图片描述

在这里插入图片描述


总结

提示:重要经验:

1)
2)学好c++,即使经济寒冬,手握10个大厂offer绝对不是问题!
3)笔试求AC,可以不考虑空间复杂度,但是面试既要考虑时间复杂度最优,也要考虑空间复杂度最优。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/422225.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【自定义表格穿梭框】自定义封装jqgrid表格穿梭框,支持分页复选全选(附完整源码及效果图)

【写在前面】其实之前业务中也有这个方面的需求&#xff0c;但是总觉得自己写的有点乱&#xff0c;此时也就借这个机会重新封装一个公共的函数去实现这个穿梭框的效果&#xff0c;支持分页勾选&#xff0c;页面展示已选中和未选择的数据&#xff0c;使得系统操作更友好。 涉及知…

数学建模(三):模拟退火算法(SA)

文章目录模拟退火算法&#xff08;SA&#xff09;一、 概述1、 算法简介2、 核心思想3、 数学原理4、 模拟退火的流程二、 实例分析1、 初始化参数2、 Metrospolis 准则3、 生成新的值4、 获取最优值5、 主程序6、 总代码模拟退火算法&#xff08;SA&#xff09; 一、 概述 1…

折叠屏市场起风,华为、OPPO“你追我赶”

配图来自Canva可画 现如今&#xff0c;智能手机已经成为了人们生活中不可或缺的重要工具&#xff0c;无论是出行&#xff0c;还是社交&#xff0c;亦或是支付&#xff0c;只需要一部智能手机就可以通通搞定。因此&#xff0c;在消费者多样化需求的助推下&#xff0c;智能手机行…

【Spring】—Spring中Bean的配置、作用域

一、Bean的配置 Spring用于生产和管理Spring容器中的Bean&#xff0c;需要开发者对Spring的配置文件进行配置。在实际开发中&#xff0c;最常采用XML格式的配置方式&#xff0c;即通过XML文件来注册并管理Bean之间的依赖关系。 在Spring中&#xff0c;XML配置文件的根元素是…

易基因:全基因组CpG密度和DNA甲基化分析方法比较(MeDIP、RRBS和WGBS)| 研究综述

大家好&#xff0c;这里是专注表观组学十余年&#xff0c;领跑多组学科研服务的易基因。 CpG密度&#xff08;CpG density&#xff09;与各种组织中的DNA甲基化相关。基因组按CpG密度分为&#xff1a;CpG岛&#xff08;CpG island&#xff0c;CGI&#xff09;、CpG岛上下游2kb…

FFMPEG VCL Pack Crack显示位置支持或光标

FFMPEG VCL Pack Crack显示位置支持或光标 FFMPEG VCL Pack是一个组合解决方案和平台&#xff0c;用于在Delphi中录制、转换和传播音频和视频&#xff0c;其中包括音频/视频库中的前一个libavcodec。 FFMPEG VCL Pack功能和选项&#xff1a; 新的Live555公司基于Rtsp Media Ser…

基于深度学习的安全帽检测系统(YOLOv5清新界面版,Python代码)

摘要&#xff1a;安全帽检测系统用于自动化监测安全帽佩戴情况&#xff0c;在需要佩戴安全帽的场合自动安全提醒&#xff0c;实现图片、视频和摄像头等多种形式监测。在介绍算法原理的同时&#xff0c;给出Python的实现代码、训练数据集&#xff0c;以及PyQt的UI界面。安全帽检…

设计模式之迭代器模式(C++)

作者&#xff1a;翟天保Steven 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 一、迭代器模式是什么&#xff1f; 迭代器模式是一种行为型的软件设计模式&#xff0c;提供一种方法能顺序访问聚合对象中的各个元…

如何做好缓存设计?

大家好&#xff0c;我是易安&#xff01;今天我们来谈一谈缓存应该如何设计。 什么是缓存 缓存是一种临时储存数据的方式。当用户查询数据时&#xff0c;系统会首先在缓存中查找&#xff0c;如果数据已经存在于缓存中&#xff0c;则直接使用&#xff0c;否则系统会到数据的原始…

研报精选230410

目录 【行业230410西南证券】医药行业2023年4月投资月报&#xff1a;看好创新药和中药行情【行业230410国信证券】汽车行业4月投资策略&#xff1a;3月新能源乘用车批发销量预计同比增长32%&#xff0c;持续关注板块年报季报行情【行业230410西南证券】医药行业周报&#xff1a…

【集成架构】探索3种顶级「集成框架」Apache、Spring和Mule

正确的集成框架是绑定应用程序架构构建块的粘合剂。应用程序组件必须不断交换关键数据&#xff0c;以方便用户操作、服务扩展、威胁监视、后端操作、事件触发等。如果没有可靠的集成过程&#xff0c;应用程序和服务故障将淹没软件环境。正确的集成框架是绑定应用程序架构构建块…

【JAVA】#详细介绍!!! synchronized 加锁 详解(1)!

本文分以下几点来介绍synchronized&#xff08;根据JDK1.8&#xff09; 1. 介绍synchronized 2. synchronized 为什么能保证线程安全 3. synchronized 的 用法 4. synchronized 的锁特性 目录 1. 介绍synchronized 2. synchronized的用法 2.1 synchronized修饰指定代码块 2…

如何定位Spark数据倾斜问题,解决方案

文章目录前言一、数据倾斜和数据过量二、 数据倾斜的表现三、定位数据倾斜问题定位思路&#xff1a;查看任务-》查看Stage-》查看代码四、7种典型的数据倾斜场景解决方案一&#xff1a;聚合元数据解决方案二&#xff1a;过滤导致倾斜的key解决方案三&#xff1a;提高shuffle操作…

谁才是天下第一关?

什么是关&#xff0c;中华大地有多少关&#xff1f; 关是往来必由之要处。“山川扼要&#xff0c;是设关津。表封藏&#xff0c;以达道路&#xff0c;天险既呈&#xff0c;人力并济”。 关可分为&#xff1a; 关防&#xff0c;驻兵防守的要塞&#xff1b;关津&#xff0c;水陆…

python笔记:qgrid

在Jupyter Notebook中像在Excel一样操作pandas的DataFrames&#xff0c;如sort/filter&#xff0c;并轻松把操作后的数据用于后续分析。 0 安装 pip install qgrid jupyter nbextension enable --py --sys-prefix qgrid 1 基本使用方法 1.1 数据 import numpy as np import…

Carla 保姆级安装教程

一&#xff1a;电脑配置 carla支持windows,Linux系统构建&#xff0c;官方对于安装电脑的最低配置要求是拥有6G显存的GPU&#xff0c;推荐8G显存的GPU&#xff0c;至少需要20G的存储空间&#xff0c;所有对电脑的配置要求是不小的挑战。 我所使用电脑的硬件配置&#xff1a;3…

3.7 曲率

学习目标&#xff1a; 如果我要学习高等数学中的曲率&#xff0c;我会遵循以下步骤&#xff1a; 1.熟悉相关的数学概念&#xff1a;在学习曲率之前&#xff0c;我们需要了解曲线、切线和曲率半径等相关的数学概念。因此&#xff0c;我会复习这些概念&#xff0c;以便更好地理…

网卡别名的设置

文章目录1. 网卡别名是什么2. 工作原理3. 设置3.1 临时添加&#xff0c;重启失效3.1.1 使用ipconfig命令来设置网卡别名3.1.2 使用ip addr命令来设置网卡别名3.2 永久性添加3.3 查看参考1. 网卡别名是什么 IP别名就是一张物理网卡上配置多个IP&#xff0c;实现类似子接口之类的…

制作PassMarkMemTest86启动U盘

制作PassMarkMemTest86启动U盘1. 概述2.制作 PassMarkMemTest86 启动U盘结束语1. 概述 PassMarkMenTest86 是一款免费、开源且强大的内存检测工具&#xff0c;能测试电脑内存的稳定性、存储大小和隐性问题&#xff0c;它还拥有 13 种不同的 RAM 测试算法&#xff0c;在主菜单中…

洛丽运动会 NFT 作品集第一弹

欢迎来到 2036 年洛丽运动会&#xff0c;这是一个以史前世界为背景的体育小游戏体验。为了庆祝这场伟大比赛的开始&#xff0c;结合了史前和运动配件的 NFT 系列将于北 The Sandbox 市场平台发布。 运动和格斗设备将提高你在运动会上的技能&#xff1b;而史前配件将使你与体育场…