C中的运算和数据类型

简介: C中的运算和数据类型

运算

进行加法运算的+和进行乘法运算的*等符号,称为运算。本章我带大家进入基本运算符的学习

运算符和操作数

读取两个整数的值,然后显示出它们的和、差、积、商和余数。

代码如下:

#include<stdio.h>
int main()
{
  int x = 0;
  int y = 0;
  puts("请输入两个整数。");
  printf("整数x:");
  scanf("%d", &x);
  printf("整数y:");
  scanf("%d", &y);
  printf("x+y=%d\n", x + y);
  printf("x-y=%d\n", x - y);
  printf("x*y=%d\n", x * y);
  printf("x/y=%d\n", x / y);
  printf("x%%y=%d\n", x % y);
  return 0;
}

像+ - * / %这样可以进行运算的符号称为运算符,作为运算对象的变量或常量称为操作符

运算符左边的操作数称为第一操作数或者左操作数,运算符右侧的操作数称为第二操作数或者右操作数

乘除运算符和加减运算符

上述代码中使用的5个运算符,可以大致的分为乘除运算符和加减运算符。

除法运算的商和余数

除法运算符有两种。通过除法运算符求商的运算符是/。

整数/整数 商的整数部分

除法运算只取商的整数部分,也就是说会舍弃小数点以后的部分。例如:5/3的结果是1,3/5的结果是是0。

整数%整数 余数

%是求余数运算符。例如:5%3的结果是2,3%5的结果是3。

使用printf函数输出%

在printf函数中的%符号具有转换说明的功能,当不需要转换的时候要写成%%,这样就可以输出%这个符号了。

获取整数的最后一位数字

通过应用求余数的运算来获取整数的最后一位数字。例如:

代码如下:

#include<stdio.h>
int main()
{
  int n = 0;
  printf("请输入一个整数:");
  scanf("%d", &n);
  printf("最后一位数是%d。", n % 10);
  return 0;
}

运行结果如下:

进行除法运算的/运算符和%运算符的结果依赖与编译器。

当两个操作数都是正数的时候

不管是那种编译器,商和余数都是正数。如下:

两个操作数至少有一个为负数

至于/运算符的结果是”小于代数商的最大整数“还是”大于代数商的最小整数“,要取决于编译器。例如:

多个转换说明

读取两个整数,并显示它们的商和余数。

代码如下:

#include<stdio.h>
int main()
{
  int a = 0;
  int b = 0;
  puts("请输入两个整数");
  scanf("%d %d", &a, &b);
  printf("%d除以%d得%d余%d。\n", a, b, a / b, a % b);
  return 0;
}

运行结果如下:

单目操作符

对读取的整数进行符号取反操作,并输出结果。

代码如下:

#include<stdio.h>
int main()
{
  int n = 0;
  printf("请输入一个整数:");
  scanf("%d", &n);
  printf("符号取反之后的值是%d。\n", -n);
  return 0;
}

运行结果如下:

根据我们操作符操作的操作数来确定是单目、双目还是三目操作符。在上述代码种的-运算符,就是对符号进行取反操作。

表达式和赋值表达式

表达式由变量和常量,以及连接它们的运算符组成。例如:

x+32 进行加法运算的表达式

x+32和x、32都是表达式

c=x+32 赋值表达式

表达式语句

C语言规定语句必须以分号结尾,因此前面提到的赋值表达式写成以下形式,才能成为正确的语句。

c=x+32; 表达式语句

这种由表达式和分号组成的语句称为表达式语句

数据类型

数据类型有很多浮点型和整数型。下面主要讲下double类型。

求平均值

读取两个数,求出它们的平均值

代码如下:

#include<stdio.h>
int main()
{
  int a = 0;
  int b = 0;
  puts("请输入两个整数:");
  scanf("%d %d", &a, &b);
  printf("它们的平均值是%d。\n", (a + b) / 2);
  return 0;
}

运行结果:

将表达式a+b括起来的(),优先级运算的标记。如果该表达式是a+b/2,结果就变成了求a和b/2的和,这与我们平时所做的数学计算相同,及要遵循先乘除后加减。

数据类型

现实生活中的平均值一般都带有小数,但是我们通过上面的案例可以得知,小数点以后的部分被舍弃了,只是留下了整数部分,这就是int类型的特征。

C语言中以浮点数表示实数,浮点数有几种类型,我们主要讲下双精度浮点数double。代码如下:

#include<stdio.h>
int main()
{
  int n = 0;
  double x = 0;
  n = 9.99;
  x = 9.99;
  printf("int 型变量n的值:%d\n", n);
  printf("          n/2:%d\n", n / 2);
  printf("double型变量x的值:%f\n", x);
  printf("            x/2.0:%f\n ", x / 2.0);
  return 0;
}

运行结果:

我们声明一个int类型变量n和一个double类型变量x,并把9.99作为值赋给他们,当给一个int类型的变量的时候,小数点后面的部分就被舍弃了。当使用它进行除法运算的时候,小数部分还是会被舍弃的。

同时还需要注意的是使用printf函数打印浮点型数据的时候,转换说明不能用%d要使用%f。

数据类型和对象

从前面的程序可以看出来int类型只能存放整数,即使把实数传给它,也只能保留整数部分。与之相对,浮点数中的double类型可以用来存储包含小数的实数值。

总结

相关文章
|
数据采集 人工智能 运维
CodeFuse荣获信通院优秀大模型案例及两项荣誉证书
2024 年 1 月 25 日,中国人工智能产业发展联盟智能化软件工程工作组(AI for Software Engineering,下文简称AI4SE)在京召开首届“AI4SE创新巡航”活动。在活动上,CodeFuse 荣获“2023 AI4SE 银弹优秀案例”,并获颁人工智能关键技术和应用评测重点实验室“代码大模型数据集共建单位”与“《智能化软件工程技术和应用要求 第一部分:代码大模型》核心编写单位”荣誉证书。
284 0
|
编解码
自学笔记|多功能模数转换器 (VADC) 配置为背景扫描功能
自学笔记|多功能模数转换器 (VADC) 配置为背景扫描功能
自学笔记|多功能模数转换器 (VADC) 配置为背景扫描功能
|
存储 JSON 前端开发
SpringBoot + Vue前后端分离开发:全局异常处理及统一结果封装
SpringBoot + Vue前后端分离开发:全局异常处理及统一结果封装的实现
1310 0
SpringBoot + Vue前后端分离开发:全局异常处理及统一结果封装
|
7月前
|
机器学习/深度学习 自动驾驶 计算机视觉
RT-DETR改进策略【模型轻量化】| 替换骨干网络为 GhostNet V1 基于 Ghost Module 和 Ghost Bottlenecks的轻量化网络结构
RT-DETR改进策略【模型轻量化】| 替换骨干网络为 GhostNet V1 基于 Ghost Module 和 Ghost Bottlenecks的轻量化网络结构
309 61
RT-DETR改进策略【模型轻量化】| 替换骨干网络为 GhostNet V1 基于 Ghost Module 和 Ghost Bottlenecks的轻量化网络结构
|
11月前
|
设计模式 Java
【设计模式】工厂模式(定义 | 特点 | Demo入门讲解)
【设计模式】工厂模式(定义 | 特点 | Demo入门讲解)
275 2
|
11月前
|
编解码 Linux iOS开发
openEuler系统下neofetch工具的安装与基本使用
【10月更文挑战第2天】openEuler系统下neofetch工具的安装与基本使用
252 1
openEuler系统下neofetch工具的安装与基本使用
|
10月前
|
存储 编解码 负载均衡
数据分片算法
【10月更文挑战第25天】不同的数据分片算法适用于不同的应用场景和数据特点,在实际应用中,需要根据具体的业务需求、数据分布情况、系统性能要求等因素综合考虑,选择合适的数据分片算法,以实现数据的高效存储、查询和处理。
|
10月前
|
缓存 Linux
揭秘Linux内核:探索CPU拓扑结构
【10月更文挑战第26天】
223 1
|
12月前
|
人工智能 小程序 IDE
编一个自己的万年历
编一个自己的万年历
224 2
|
Cloud Native 关系型数据库 分布式数据库