C语言 运算符

news2024/11/5 1:28:14

时间:2024.11.4

一、学习内容

1、算数运算符(加、减、乘、除法和取余) 

通用细节:
    

   1.整数计算,结果一定是一个整数
    2.小数计算,结果一定是一个小数
    3.整数和小数计算,结果一定是一个小数
    4.小数直接参与计算,结果有可能不精确
    

除法的细节:

不能除以0

 取余的细节:

    1.取余运算的数据必须全部是整数
    2.获取余数的正负,是与第一个数字保持一致的
    3.不能除以0        

#include<stdio.h>
int main() {
//数字直接计算
	printf("%d\n", 3 + 2);
	printf("%d\n", 3 - 2);
	printf("%d\n", 3 * 2);
	printf("%.2lf\n", 1.1 + 1.01);
	printf("%.2lf\n", 1.1 - 1.01);
	printf("%.2lf\n", 1.1 * 1.01);
	
//变量进行运算
	int a = 3, b = 2;
	printf("%d\n", a + b);
	printf("%d\n", a - b);
	printf("%d\n", a * b);
//除法(/)	
	printf("%d\n", 10/2);
//取余(%)
	printf("%d\n", 10 % 2);
/*通用细节:
	1.整数计算,结果一定是一个整数
	2.小数计算,结果一定是一个小数
	3.整数和小数计算,结果一定是一个小数
	4.小数直接参与计算,结果有可能不精确
	除法的细节:
	不能除以0
	取余的细节:
	1.取余运算的数据必须全部是整数
	2.获取余数的正负,是与第一个数字保持一致的
	3.不能除以0        */
	printf("%d\n", 10 / 3);    //3
	printf("%lf\n", 10 / 3);   //0.00000

	printf("%lf\n", 10.0+3.0);
	printf("%lf\n", 10/ 3.0);
	printf("%d\n", 10 / 3.0);   //-1431655765,出错

	printf("%lf\n", 3.333333333333333+6.666666666666666);  //10.000000
	printf("%.20lf\n", 10.0 / 3.0);  //3.33333333333333348136

	printf("%d\n", -10 % 3);   //-1
	printf("%d\n", 10 % -3);   //1
	return 0;
}

2、隐式转换

数字相加,数据类型不一样不能直接运算,需要转成一样的,才能运算

隐式转换(程序自动帮我们完成的):

把一个取值范围小的,转换成取值范围大的(程序自动在前面补0)

short a=10;
int b=a;
short a=10;
short b=20;
c=a+b;//c为int类型

 

3、强制转换

把一个取值范围大的,赋值给取值范围小的,就需要强制转换,有可能会导致数据发生错误

格式:目标数据类型 变量名=(目标数据类型)被强转的数据;

int b=10;
short i=(short)b;

//错误代码
short s1=10;
short s2=20;
short result =s1+s2;

//正确代码
short s1=10;
short s2=20;
short result =(short)(s1+s2);

 要求:凡是强制转换,需要自己手动书写

4、字符相加

char c='a';
int i=c+1;
char c=97;
printf("%d\n",c);   //97
printf("%c\n",c);   //a

 ASCII码如果忘记,可以在VS中用代码算

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

5、算术运算符小结

6、自增自减运算符

 

int a=10;
a++;
printf("%d\n",a);//11



int a=10;
++a;
printf("%d\n",a);//11

7、自增自减运算符扩展

int a=10;
int b=a++;   //先用再加,b=10


int a=10;
int b=++a;   //先加后用,b=11
int a=10;
int b=a++;//b=10
int c=++a;//c=12
printf("%d\n",a);
printf("%d\n",b);
printf("%d\n",c);



int i=10;
int j=5;
int k=i++ + ++i - --j - i--;
//    11  +  11 - 4   - 11  = 7  windows
//    10  +  12 - 4   - 12  =6   mac
printf("%d\n",k);

//windows:7
前缀优先于后缀
前缀统一自增/自减,再把结果拿出来用
12 +12=24
//后缀统一先用,等整个表达式中变量用完了,再进行自增

//mac、Linux:6
//前缀和后缀的优先级是一样的
//从左到右依次计算
//每一个前缀和后缀都是一个独立的个体
int a=10;
int k1= a++ + a++ +a;  //10+10+10,a=12
int k2= ++a + ++a +a;  //14+14+14,a=14
int k3= ++a + a++ +a;  //15+15+15,a=16
int k4= a++ + ++a +a;  //17+17+17,a=18

printf("%d\n",k1);//30
printf("%d\n",k2);//42
printf("%d\n",k3);//45
printf("%d\n",k4);//51

 

8、赋值运算符

//+=
//把左边和右边进行相加,结果赋值给左边,对右边没有任何影响
int a=10;
int b=20;
a+=b;
printf("%d\n",a);//30
printf("%d\n",b);//20

9、关系运算符

int a=10;
int b=20;

printf("%d\n",a==b);  //0
printf("%d\n",a!=b);  //1
printf("%d\n",a>b);   //0
printf("%d\n",a>=b);  //0
printf("%d\n",a<b);   //1
printf("%d\n",a<=b);  //1

 

10、逻辑运算符

//1:成立  0:不成立
//&&(与):并且
printf("%d\n",1&&1);//1
printf("%d\n",0&&0);//0
printf("%d\n",1&&0);//0
printf("%d\n",0&&1);//0


//||(或):或者
printf("%d\n",1||1);//1
printf("%d\n",0||0);//0
printf("%d\n",1||0);//1
printf("%d\n",0||1);//1

//取反!
printf("%d\n",!1);//0
printf("%d\n",!0);//1

 

11、逻辑运算符的短路效果

 

int a=0;
printf("%d\n",a>1&&a<10);//0
//只比较了a>1

int b=10;
printf("%d\n",b==10||b==20);//1
//只比较了b==10

 

12、三元运算符

//三目运算符、三目表达式、问号冒号运算符
//格式:关系表达式?表达式1:表达式2;

//练习1:获取两个变量的较大值
int a=10;
int b=20;
int c=a>b?a:b;
printf("%d\n",c);


//获取三个变量的最大值
int a=10;
int b=30;
int c=20;
int d=a>b?a:b;
int f=c>d?c:d;
printf("%d\n",f);

13、逗号运算符(分隔符)

int a=1,b=2,c=3;
printf("%d %d %d\n",a,b,c);



//逗号运算符(分隔符)
int i;
i=3,++i,i++,i+5;  //i=10
printf("%d\n",i);

//printf("%d\n",3,++i,i++,i+5);错误写法,格式字符串里传递的参数太多
//等价于printf("%d\n",(i=3,++i,i++,i+5));

#include<stdio.h>
int main(){

int n;
int a,b,c;
scanf("%d\n",&n);
a=n>=0?n:(-1*n);
b=a%3;              //a%=3;
c=b*10;             //a*=10;
printf("%d\n",c);  //printf("%d\n",a);

return 0;
}

//用逗号运算符
a=n>=0?n:(-1*n),a%=3,a*=10;

 

14、运算符的优先级

//练习1
int w=4,x=3,y=2,z=1;
int number=w<x?w:z<y?z:x;  //1
printf("%d\n",number);

//练习2
int a=3,b=2,c=1;
int max =a>b?(a>c?a:c):(b>c?b:c);
printf("max=%d\n",max);//3


//练习3
int x=10,y=20,z=30,h=40,w=50;
int number=x>h?z>w?x>z?x>y?x:y:z:w:w>h?w:h;
//int number=x>h?(z>w?x>z?x>y?x:y:z:w):w>h?w:h;
//int number=x>h?(z>w?x>z?x>y?x:y:z:w):w>h?w:h;//50
printf("%d\n",number);

二、练习

1、练习1-数值拆分

需求:键盘录入一个三位数,将其拆分为个位、十位、百位后,打印在控制台。

#include<stdio.h>
int main() {

	//数值拆分
	//键盘录入+数值拆分+输出打印
	int n, a, b, c;
	scanf("%d", &n);
	a = n / 100;
	b = n / 10 % 10;
	c = n % 10;
	printf("%d\n", a);
	printf("%d\n", b);
	printf("%d\n", c);
	return 0;
}

 

2、练习2-逻辑运算

1)x<=0
2)a!=0

1.
int n;
int a,b;
scanf("%d\n",&n);
a=n/10;
b=n%10;
int c=(a!=7)&&(b!=7);
printf("%d\n",c);



2.
int n;
int a,b;
scanf("%d\n",&n);
a=n/10;
b=n%10;
int c=(a!=7)&&(b!=7)&&(n%7!=0);
printf("%d\n",c);

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

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

相关文章

LLM | 论文精读 | AAAI | EarthVQA:向可查询地球迈进的多模态视觉问答研究

论文标题: EarthVQA: Towards Queryable Earth via Relational Reasoning-Based Remote Sensing Visual Question Answering 作者: Junjue Wang, Zhuo Zheng, Zihang Chen, Ailong Ma, Yanfei Zhong 期刊: The Thirty-Eighth AAAI Conference on Artificial Intelligence (AA…

总结拓展十五:SAP物料分割评估

一、概述 在SAP中&#xff0c;物料的分割评估是指&#xff0c;对同一个物料做不同的价值设置。即&#xff0c;根据不同的条件&#xff0c;核算其价格及记录价格的相关属性。 二、物料主数据设置 1、物料主数据-会计1视图 只有价格控制“V”可以分割评估。 2、设置评估类型…

ai翻唱部分步骤

模型部署 我是用的RVC进行的训练&#xff0c;也可以使用so-vits-svc。 通过百度网盘分享的文件&#xff1a;RVC-beta 链接&#xff1a;https://pan.baidu.com/s/1c99jR2fLChoqUFqf9gLUzg 提取码&#xff1a;4090 以Nvida显卡为例&#xff0c;分别下载“RVC1006Nvidia”和…

[综述笔记]Deep learning for brain disorder diagnosis based on fMRI images

论文网址&#xff1a;Deep learning for brain disorder diagnosis based on fMRI images - ScienceDirect 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有发现欢迎评论指正&#xff01;文章偏向…

HarmonyOS:UIAbility组件概述

一、概述 UIAbility组件是一种包含UI的应用组件&#xff0c;主要用于和用户交互。 UIAbility的设计理念&#xff1a; 原生支持应用组件级的跨端迁移和多端协同。支持多设备和多窗口形态。 UIAbility划分原则与建议&#xff1a; UIAbility组件是系统调度的基本单元&#xff0c…

jeecgbootvue2菜单路由配置静态文件夹(public)下的html

需求:想要在菜单配置src/assets/iconfont/chart.html显示页面(目的是打包上线以后运维依然可以修改数据) 官网没有相关数据&#xff1a;菜单配置说明 JeecgBoot 开发文档 看云 问题现象: 我把文件放在src/assets/iconfont/chart.html然后在vue中作为 iframe 的 src 属性&am…

【Vue框架】基础语法练习(1)

其实更多知识点已经在Vue.js官网十分清楚了&#xff0c;大家也可以去官网进行更细节的学习 https://cn.vuejs.org/ 说明&#xff1a;目前最新是Vue3版本的&#xff0c;但是Vue2已经深得人心&#xff0c;所以就是可以支持二者合用。它们最大的区别就是Vue3是组合式API&#xf…

爬虫学习4

from threading import Thread#创建任务 def func(name):for i in range(100):print(name,i)if __name__ __main__:#创建线程t1 Thread(targetfunc,args("1"))t2 Thread(targetfunc, args("2"))t1.start()t2.start()print("我是诛仙剑")from …

qt QScrollArea详解

1、概述 QScrollArea是Qt框架中的一个控件&#xff0c;它提供了一个可滚动的视图区域&#xff0c;用于显示超出视图大小的内容。这个控件非常有用&#xff0c;尤其是在处理大型表格、文本区域、图像集合或任何需要滚动浏览的内容时。QScrollArea本身不直接显示内容&#xff0c…

【ChatGPT】搜索趋势分析

【ChatGPT】搜索趋势分析 为了分析 ChatGPT 在过去一年的流行趋势&#xff0c;我们可以查看 Google Trends 的数据 安装依赖pytrends pip install pytrends运行以下 Python 脚本 import pandas as pd import matplotlib.pyplot as plt from pytrends.request import TrendR…

Mac如何实现高效且干净的卸载应用程序

使用Mac卸载应用程序&#xff0c;你还在使用废纸篓这个办法吗&#xff0c;看不见卸载了什么&#xff0c;看不见清理了多少&#xff0c;真的不会有残留吗 XApp Mac上的卸载专家&#xff0c;强大的垃圾逻辑检测&#xff0c;垃圾扫描更全面&#xff0c;卸载更干净 使用简单&#…

安科瑞AMB400分布式光纤测温系统解决方案--远程监控、预警,预防电气火灾

安科瑞戴婷 可找我Acrel-Fanny 安科瑞AMB400电缆分布式光纤测温具有多方面的特点和优势&#xff1a; 工作原理&#xff1a; 基于拉曼散射效应。激光器产生大功率的光脉冲&#xff0c;光在光纤中传播时会产生散射。携带有温度信息的拉曼散射光返回光路耦合器&#xff0c;耦…

GitHub上传自己的项目

目录 一、安装Git插件 1&#xff09;下载 2&#xff09;安装 二、创建Gothub的创库 三、通过Git上传本地文件到Github 四、其他 1、部分指令 2、如果已经运行过git init并设置了[user]&#xff0c;下次可以直接用 一、安装Git插件 1&#xff09;下载 下载地址&#x…

Spring Boot框架

一.SpringBoot简介 1.1 设计初衷 目前我们开发的过程当中&#xff0c;一般采用一个单体应用的开发采用 SSM等框架进行开发&#xff0c;并在 开发的过程当中使用了大量的xml 等配置文件&#xff0c;以及在开发过程中使用MAVEN的构建工具来进 行构建项目&#xff0c;但是往往有…

【C++】vector 类深度解析:探索动态数组的奥秘

&#x1f31f;快来参与讨论&#x1f4ac;&#xff0c;点赞&#x1f44d;、收藏⭐、分享&#x1f4e4;&#xff0c;共创活力社区。 &#x1f31f; 如果你对string类还存在疑惑&#xff0c;欢迎阅读我之前的作品 &#xff1a; &#x1f449;【C】string 类深度解析&#xff1a;…

windows——病毒的编写

声明 学习视频来自B 站up主泷羽sec&#xff0c;如涉及侵权马上删除文章。 笔记的只是方便各位师傅学习知识&#xff0c;以下网站只涉及学习内容&#xff0c;其他的都与本人无关&#xff0c;切莫逾越法律红线&#xff0c;否则后果自负。 windows基础 我们学习了前面的window…

STM32 + CubeMX + 硬件SPI + W5500 +UDP

这篇文章记录一下STM32W5500UDP的调试过程&#xff0c;实现UDP数据的接收与发送。 目录 一、W5500模块介绍二、Stm32CubeMx配置三、Keil代码编写1、添加W5500驱动代码到工程&#xff08;添加方法不赘述&#xff0c;驱动代码可以在官网找&#xff09;2、在工程中增加代码&#…

原来大佬的测试用例都是这样写的...

1、测试点与测试用例 测试点不等于测试用例&#xff0c;这是我们首先需要认识到的。 问题1&#xff1a;这些测试点在内容上有重复&#xff0c;存在冗余。 问题2&#xff1a;一些测试点的测试输入不明确&#xff0c;不知道测试时要测试哪些。 问题3&#xff1a;总是在搭相似…

【论文解读】Med-BERT: 用于疾病预测的大规模结构化电子健康记录的预训练情境化嵌入

【论文解读】Med-BERT: 用于疾病预测的大规模结构化电子健康记录的预训练情境化嵌入 Med-BERT:pretrained contextualized embeddings on large-scale structured electronic health records for disease prediction ​ ​ 摘要:基于电子健康记录(EHR)的深度学习(DL)预…

天锐绿盾加密软件与Ping32 — 数据安全与性能优化的完美结合

在数字化时代&#xff0c;企业对数据安全的重视程度日益增加。随着网络攻击和数据泄漏事件频发&#xff0c;选择合适的安全解决方案显得尤为重要。天锐绿盾与Ping32作为两款备受推崇的安全软件&#xff0c;各自为企业提供了独特的功能和优势&#xff0c;共同为企业的数据安全和…