C语言运算符_tang运算-程序员宅基地

技术标签: c语言  C语言教程  编程语言  

一、C语言的运算符

C语言有六种运算符,如下:

1)算术运算符;

2)赋值运算符;

3)sizeof运算符;

4)关系运算符;

5)逻辑运算符;

6)位运算符。

本章将只介绍算术运算符、赋值运算符和sizeof运算符,关系运算符和逻辑运算符放在其它章节中介绍,位运算符极少使用,了解即可,不深入学习。

二、算术运算符

下表显示了 C 语言支持的所有算术运算符。假设变量 A 的值为 18,变量 B 的值为5,则:

运算符 描述 实例
+ 两个数相加 A+B 将得到 23
- 一个数减另一个数 A-B 将得到 13
* 两个数相乘 A*B 将得到 90
/ 分子除以分母 A/B 将得到 3.6
% 余数运算符,整除后的余数 B%A 将得到 3
++ 自增运算符,整数值增加 1 A++ 将得到 19
自减运算符,整数值减少 1 A-- 将得到 17

示例(book15.c)

/*
 *  程序名:book15.c,此程序演示算术运算符的使用。
 *  作者:C语言技术网(www.freecplus.net) 日期:20190525
*/
#include <stdio.h>

int main()
{
    
  double    A=18;      // 定义变量A,赋值18
  double    B=5;       // 定义变量B,赋值5

  printf("A的值是:%lf\n",A);
  printf("B的值是:%lf\n",B);

  printf("A+B的值是:%lf\n",A+B);
  printf("A-B的值是:%lf\n",A-B);
  printf("A*B的值是:%lf\n",A*B);
  printf("A/B的值是:%lf\n",A/B);

  //printf("A除B的余数是:%lf\n",A%B);

  A++;  // 自增1
  printf("A自增后的值是:%lf\n",A);

  B--;  // 自减1
  printf("B自减后的值是:%lf\n",B);

  return 0;
}

运行效果

在这里插入图片描述
变量的自增或自减有两种写法:

变量名++; // 表示在本次使用变量后再自增;

++变量名; // 表示在本次使用变量前自增;

变量名–; // 表示在本次使用变量后再自增;

–变量名; // 表示在本次使用变量前自减;

示例(book16.c)

/*
 *  程序名:book16.c,此程序演示算术运算符++和--的使用。
 *  作者:C语言技术网(www.freecplus.net) 日期:20190525
*/
#include <stdio.h>

int main()
{
    
  int    ii=0;      // 定义变量ii并初始化

  ii=10;
  printf("ii++的值是:%d\n",ii++);  // 在使用后自增
  printf("ii的值是:%d\n",ii);

  ii=10;
  printf("++ii的值是:%d\n",++ii);  // 在使用前自增
  printf("ii的值是:%d\n",ii);

  return 0;
} 

运行效果

在这里插入图片描述

三、赋值运算符

下表列出了 C 语言支持的赋值运算符:

运算符 描述 实例
= 简单的赋值运算符,把右边操作数的值赋给左边操作数 C = A + B 将把 A + B 的值赋给 C
+= 加且赋值运算符,把右边操作数加上左边操作数的结果赋值给左边操作数 C += A 相当于 C = C + A
-= 减且赋值运算符,把左边操作数减去右边操作数的结果赋值给左边操作数 C -= A 相当于 C = C - A
*= 乘且赋值运算符,把右边操作数乘以左边操作数的结果赋值给左边操作数 C *= A 相当于 C = C * A
/= 除且赋值运算符,把左边操作数除以右边操作数的结果赋值给左边操作数 C /= A 相当于 C = C / A
%= 求余数且赋值运算符,求两个操作数的模赋值给左边操作数,浮点数不适用取余数。 C %= A 相当于 C = C % A

赋值运算符支持的是C语言的基本数据类型,包括char、int和double,字符串(字符数组)不能使用赋值运算符。

示例(book17.c)

/*
 *  程序名:book17.c,此程序演示赋值运算符的使用。
 *  作者:C语言技术网(www.freecplus.net) 日期:20190525
*/
#include <stdio.h>

int main()
{
    
  int    C=0;     // 定义变量C并初始化
  int    A=21;    // 定义变量A并初始化

  C=A;
  printf("运算符  = 演示,C的值 = %d\n",C);

  C+=A;  // C=C+A;
  printf("运算符 += 演示,C的值 = %d\n",C);

  C-=A;  // C=C-A;
  printf("运算符 -= 演示,C的值 = %d\n",C);

  C*=A;  // C=C*A;
  printf("运算符 *= 演示,C的值 = %d\n",C);

  C/=A;  // C=C/A;
  printf("运算符 /= 演示,C的值 = %d\n",C);

  C=200;
  C%=A;  // C=C%A;
  printf("运算符 %= 演示,C的值 = %d\n",C);

  return 0;
}

运行效果

在这里插入图片描述

四、sizeof运算符

sizeof是C语言的关键字,它用来计算变量(或数据类型)在当前系统中占用内存的字节数。

sizeof不是函数,产生这样的疑问是因为sizeof的书写确实有点像函数,sizeof有两种写法:

用于数据类型

sizeof(数据类型);

数据类型必须用括号括住。

printf("字符型变量占用的内存是=%d\n",sizeof(char));   // 输出:字符型变量占用的内存是=1
printf("整型变量占用的内存是=%d\n",sizeof(int));   // 输出:整型变量占用的内存是=4

用于变量

sizeof(变量名);
sizeof 变量名;

变量名可以不用括号括住,带括号的用法更普遍,大多数程序员采用这种形式。

int ii;
printf("ii占用的内存是=%d\n",sizeof(ii));   // 输出:ii占用的内存是=4
printf("ii占用的内存是=%d\n",sizeof ii);   // 输出:ii占用的内存是=4

五、运算符的优先级

在±*/四则运算符中,*/的优先级高于±,在C语言中,其它的运算符都有优先级,我不想介绍它们的优先级,我写了二十年的程序,也记不住各种运算符的优先级的关系。

我不建议程序员记住各种运算符的优先级,而是用括号解决全部的问题,括号的优先级是最高的,括号中的表达式会优先执行,这样各个运算符的执行顺序就一目了然了。

int d = a + (b * c);

六、版权声明

C语言技术网原创文章,转载请说明文章的来源、作者和原文的链接。
来源:C语言技术网(www.freecplus.net)
作者:码农有道

如果这篇文章对您有帮助,请点赞支持,或在您的博客中转发我的文章,谢谢!!!
如果文章有错别字,或者内容有错误,或其他的建议和意见,请您留言指正,非常感谢!!!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_42428258/article/details/107547948

智能推荐

Sample Probability Space_probability space例题-程序员宅基地

文章浏览阅读66次。Sample Probability SpaceA simple probability space consist of a tuple (Ω\OmegaΩ,ε\varepsilonε,p)Ω\OmegaΩ is a finite set (with cardinality k= ∣\mid∣Ω\OmegaΩ∣\mid∣)ε\varepsilonε = { A : A ⊆\subseteq⊆ Ω\OmegaΩ } consist of all finite subsetsEach events _probability space例题

python分布式服务系统框架_Cola:一个分布式爬虫框架 - 系统架构 - Python4cn(news, jobs)...-程序员宅基地

文章浏览阅读348次。由于早先写的WeiboCrawler问题很多,而且当时我有提到,其实可以实现一个通用的爬虫框架。最近由于要抓取新的数据,于是我就写了这个cola。下面的文字来自wiki。Cola是一个分布式的爬虫框架,用户只需编写几个特定的函数,而无需关注分布式运行的细节。任务会自动分配到多台机器上,整个过程对用户是透明的。依赖由于Cola配置文件使用的yaml,所以Cola只依赖于pyyaml,安装easy_i..._cola爬虫

名悦集团国庆出行自驾游攻略-程序员宅基地

文章浏览阅读75次。在这个买车已经不是什么难事的年代,大多数人出行都会选择自驾方式,但自驾出游必然要面临一系列的问题以及做足准备工作。名悦集团小编给大家总结出了这次国庆假期出行自驾游攻略,为了保证自驾过程的安全顺利,玩得更加痛快,临行前的车辆检查时必不可少的,这些项目可以自己检查,如果实在是懒或者不懂,可以在临行前去4S店做个基础保养,以让爱车在最佳车况陪伴自己和家人朋友开始这段愉快的旅程。1.轮胎轮胎的检查是自驾前需要关键的检查之一,在自驾的旅程上不管是轮胎没气还是爆胎,都是非常令人揪心的,如果是在高速或者...

Android 输入法框架源码分析总结(1)_android 输入法源码-程序员宅基地

文章浏览阅读3.6k次,点赞3次,收藏7次。参考文档 https://blog.csdn.net/huangyabin001/article/details/28434989https://blog.csdn.net/huangyabin001/article/details/28435093#commentshttps://blog.csdn.net/jieqiong1/article/details/712629871..._android 输入法源码

Ubuntu下使用nnUNet 训练自己的数据集(只管实现,不讲原理,通俗易懂)_nnunet训练自己的数据集-程序员宅基地

本文介绍了如何在Ubuntu下使用nnUNet训练自己的数据集,不涉及原理解析,只提供实现步骤。包括nnUNet简介、修改训练参数和文件位置等操作。详细内容可参考Tina的博文。

SSM实现秒杀系统案例-程序员宅基地

文章浏览阅读9.9k次,点赞10次,收藏88次。对于抢购系统来说,首先要有可抢购的活动,而且这些活动具有促销性质,这种大型活动的负载可能是平时的几十倍,所以通过增加硬件、优化瓶颈代码等手段是很难达到目标的,所以抢购系统得专门设计。在这里我们说的库存不是真正意义上的库存,其实是该促销可以抢购的数量,真正的库存在基础库存服务。用户点击『提交订单』按钮后,在抢购系统中获取了资格后才去基础库存服务中扣减真正的库存;而抢购系统控制的就是资格/剩余数。传统方案利用数据库行锁,但是在促销高峰数据库压力过大导致服务不可用,目前采用redis集群(16分片)缓存促销信息,

随便推点

正则表达式匹配各种括号内内容_正则表达式 匹配多个括号-程序员宅基地

文章浏览阅读2.8w次,点赞10次,收藏9次。用正则表达式匹配两个字符中间的文本String skh ="(?<=\\《)[^\\》]+";//用于匹配《》里面的文本String str="但实际上《kajdwdej》孙大伟多";//测试字符串Pattern pattern=Pattern.compile(skh); Matcher matcher=pattern.matcher(str); boolean is=matche_正则表达式 匹配多个括号

Android 中的Shape_linear radial sweep分别代表的什么-程序员宅基地

文章浏览阅读553次。之前一直看项目用过这个东西,但是自己都不怎么熟悉,大概就知道可以画一些圆角之类的~ 今天就来好好了解一下吧~Shape里面有很多属性,依次学习一下第一步~首先来写一个Button这个布局文件就不贴了...太简单了~ (PS:说贴出来的站出来,我保证不打死你!)接下来开始学习第一个属性:Solid:(填充)在Drawable里面创建一个butt_linear radial sweep分别代表的什么

graphpad细胞增殖曲线_如何用GraphPad Prism绘制剂量反应曲线?-程序员宅基地

文章浏览阅读6.1k次。上图是Sci文献中的dose–response curves (剂量反应曲线),横坐标是药物GS-Se-SG浓度的对数值,纵坐标是Rrelative cell viability(相对细胞活性,% of control),从图注中可以知道IC50为5.1 μM。那么什么是IC50呢?IC50 (half maximal inhibitory concentration)是指被测量的拮抗剂的半抑制浓..._graphpad细胞增殖曲线

二叉查找树(非递归、递归遍历)_二叉排序树非递归查找-程序员宅基地

文章浏览阅读658次。二叉查找树(含递归、非递归遍历)_二叉排序树非递归查找

spark-sql 查询报错:Invalid method name: ‘get_table_req‘_invalid method name: 'get_table_req-程序员宅基地

文章浏览阅读3.1k次。spark-sql> select * from zps_d001 limit 1;Error in query: org.apache.hadoop.hive.ql.metadata.HiveException: Unable to fetch table zps_xxx. Invalid method name: 'get_table_req'org.apache.spark.sql.AnalysisException: org.apache.hadoop.hive.ql.metadata.H_invalid method name: 'get_table_req

unknown mutation type:-程序员宅基地

文章浏览阅读1.7w次。我这边使用得是vue+elementvue得状态组成actions 这个是异步请求 通过异步请求得话 然后在调用 mutations.jsmutations.js 将数据提交到这里 this.$commit(‘test’,testTemp)index.js 这个是将数据初始化getters 这个是将 this.$store.getters.test 就能获取到了 testTemp写法是这个写法最后得原因是因为我这在 index.js 和mutation.js 为定义常量##_unknown mutation type

推荐文章

热门文章

相关标签