目录

前言:●由于作者水平有限,文章难免存在谬误之处,敬请读者斧正,俚语成篇,恳望指教!

——By 作者:新晓·故知

操作符详解<1>:​

题例:

1. 操作符分类:

算术操作符

移位操作符

位操作符

赋值操作符

单目操作符

关系操作符

逻辑操作符

条件操作符

逗号表达式

下标引用、函数调用和结构成员

2. 算术操作符

+      -     *       /    %

注:

当  /(除号) 两端都是整数的时候,执行的是整数除法,两端只要有一个浮点数,执行的就是浮点数的除法

3.移位操作符

4. 位操作符

5. 赋值操作符

复合赋值符:

6.单目操作符

——Since  新晓-故知


前言:
●由于作者水平有限,文章难免存在谬误之处,敬请读者斧正,俚语成篇,恳望指教!

——By 作者:新晓·故知

操作符详解<1>:

题例:

#include <stdio.h>
int main()
{//(3,4) - 逗号表达式,结果是最后一个表达式的结果int arr[] = { 1,2,(3,4),5 };printf("%d\n", sizeof(arr));return 0;
}

#include <string.h>
#include <stdio.h>
int main()
{char str[] = "hello bit";printf("%d %d\n", sizeof(str), strlen(str));return 0;
}

//创建一个整形数组,完成对数组的操作
//
//实现函数init() 初始化数组为全0
//实现print()  打印数组的每个元素
//实现reverse()  函数完成数组元素的逆置。#include <stdio.h>void init(int arr[], int sz)
{int i = 0;for (i = 0; i < sz; i++){arr[i] = 0;}
}void print(int arr[], int sz)
{int i = 0;for (i = 0; i < sz; i++){printf("%d ", arr[i]);}printf("\n");
}void reverse(int arr[], int sz)
{int left = 0;int right = sz-1;while (left<right){int tmp = arr[left];arr[left] = arr[right];arr[right] = tmp;left++;right--;}
}int main()
{int arr[10] = {1,2,3,4,5,6,7,8,9,10};//initint sz = sizeof(arr) / sizeof(arr[0]);print(arr, sz);reverse(arr, sz);print(arr, sz);//init(arr, sz);  init(arr[10],sz)是数组第11个元素,访问越界,因此传参只需传递数组名arr//print(arr, sz);return 0;
}

将数组A中的内容和数组B中的内容进行交换。(数组一样大)int main()
{int arr1[] = { 1,3,5,7,9 };int arr2[] = { 2,4,6,8,10 };//交换int tmp = 0;int i = 0;int sz = sizeof(arr1) / sizeof(arr1[0]);for (i = 0; i < sz; i++){tmp = arr1[i];arr1[i] = arr2[i];arr2[i] = tmp;}return 0;
}

1. 操作符分类:

算术操作符

移位操作符

位操作符

赋值操作符

单目操作符

关系操作符

逻辑操作符

条件操作符

逗号表达式

下标引用、函数调用和结构成员

2. 算术操作符

+      -     *       /    %

注:

1. 除了 % 操作符之外,其他的几个操作符可以作用于整数和浮点数。

2. 对于 / 操作符如果两个操作数都为整数,执行整数除法。而只要有浮点数执行的就是浮点数除法。

3. % 操作符的两个操作数必须为整数。返回的是整除之后的余数。

int main()
{//int ret = 10 % 3;//% - 取模(余) - 得到的是相除之后的余数int ret = 10 / 3;//除法 - 商printf("%d\n", ret);当  /(除号) 两端都是整数的时候,执行的是整数除法,两端只要有一个浮点数,执行的就是浮点数的除法//double ret = 10.0 / 3.0;//printf("%lf\n", ret);//10.0 % 3;//errreturn 0;
}

当  /(除号) 两端都是整数的时候,执行的是整数除法,两端只要有一个浮点数,执行的就是浮点数的除法

移位运算
int main()
{int a = -5;//把a在内存中存储的二进制位向左移动2位int b = a << 2;printf("%d\n", b);printf("%d\n", a);//int a = -1;return 0;
}

3.移位操作符

1.<<左移操作符      

>> 右移操作符     注:移位操作符的操作数只能是整数。

左移操作符 移位规则: 左边抛弃、右边补0

 2.右移操作符

移位规则: 首先右移运算分两种: 1. 逻辑移位 左边用0填充,右边丢弃 2. 算术移位 左边用原该值的符号位填充,右边丢弃

警告⚠ :

对于移位运算符,不要移动负数位,这个是标准未定义的。

例如: int num = 10; num>>-1;//error

4. 位操作符

& //按位与

| //按位或

^ //按位异或

注:他们的操作数必须是整数。

 不能创建临时变量(第三个变量),实现两个数的交换

#include <stdio.h>
int main()
{int a = 10;int b = 20;a = a ^ b;b = a ^ b;a = a ^ b;printf("a = %d b = %d\n", a, b);return 0;
}

方法1问题:繁琐,但常用

方法2问题:可能超出整型范围

方法3问题:异或不常用

int main()
{int a = 0;//~ 按(内存中补码的2进制)位取反//00000000000000000000000000000000//11111111111111111111111111111111 - 补码//11111111111111111111111111111110 - 反码//10000000000000000000000000000001 - 原码 --> -1printf("%d\n", ~a);return 0;
}

int main()
{int a = 10;a |= (1 << 2);printf("%d\n", a);a &= ~(1 << 2);printf("%d\n", a);//00000000000000000000000000001010//00000000000000000000000000000100   1<<2//00000000000000000000000000001110//11111111111111111111111111111011  ~(1<<2)//00000000000000000000000000001010return 0;
}

5. 赋值操作符

赋值操作符是一个很棒的操作符,他可以让你得到一个你之前不满意的值。也就是你可以给自己重新赋 值。

int weight = 120;//体重
weight = 89;//不满意就赋值
double salary = 10000.0;
salary = 20000.0;//使用赋值操作符赋值。赋值操作符可以连续使用,比如:
int a = 10;
int x = 0;
int y = 20;
a = x = y+1;//连续赋值
这样的代码感觉怎么样?
那同样的语义,你看看:
x = y+1;
a = x;
这样的写法是不是更加清晰爽朗而且易于调试。

复合赋值符:

+=
-=
*=
/=
%=
>>=
<<=
&=
|=
^=

这些运算符都可以写成复合的效果。 比如:

6.单目操作符

6.1 单目操作符介绍


赋值操作符可以连续使用,比如:
int a = 10;
int x = 0;
int y = 20;
a = x = y+1;//连续赋值
这样的代码感觉怎么样?
那同样的语义,你看看:
x = y+1;
a = x;
这样的写法是不是更加清晰爽朗而且易于调试。
int x = 10;
x = x+10;
x += 10;//复合赋值
//其他运算符一样的道理。这样写更加简洁。
!           逻辑反操作
-           负值
+           正值
&           取地址
sizeof      操作数的类型长度(以字节为单位)
~           对一个数的二进制按位取反
--          前置、后置--
++          前置、后置++
*           间接访问操作符(解引用操作符)
(类型)       强制类型转换

演示代码:

#include <stdio.h>
int main()
{int a = -10;int *p = NULL;printf("%d\n", !2);printf("%d\n", !0);a = -a;p = &a;printf("%d\n", sizeof(a));printf("%d\n", sizeof(int));printf("%d\n", sizeof a);//这样写行不行?printf("%d\n", sizeof int);//这样写行不行?return 0;
}

——Since  新晓-故知

C语言学习笔记—P13(操作符详解<1>+图解+题例)相关推荐

  1. C语言学习19:操作符详解

    目录 1.操作符种类 1.1 算术操作符 1.2 移位操作符 1.3 位操作符 1.4 赋值操作符 1.5 单目操作符 1.6 关系操作符 1.7 逻辑操作符 1.8 条件操作符 1.9 逗号表达式 ...

  2. 【C语言学习笔记】万字详解C循环

    循环语句 文章目录 循环语句 0x00 什么是语句 0x01 循环语句 1.while循环 2.do...while循环 3.for循环 3.1 for循环简介 3.2 for循环变种 4.跳出循环 ...

  3. ELK学习笔记之Logstash详解

    0x00 Logstash概述 官方介绍:Logstash is an open source data collection engine with real-time pipelining cap ...

  4. Java中大数据数组,Java基础学习笔记之数组详解

    摘要:这篇Java开发技术栏目下的"Java基础学习笔记之数组详解",介绍的技术点是"java基础学习笔记.基础学习笔记.Java基础.数组详解.学习笔记.Java&qu ...

  5. expect学习笔记及实例详解【转】

    1. expect是基于tcl演变而来的,所以很多语法和tcl类似,基本的语法如下所示: 1.1 首行加上/usr/bin/expect 1.2 spawn: 后面加上需要执行的shell命令,比如说 ...

  6. oracle scn 重置,学习笔记:Oracle SCN详解 SCN与Oracle数据库恢复的关系

    天萃荷净 分享一篇关于Oracle SCN的详解,介绍SCN与Oracle数据库恢复的关系和SCN在数据库中的作用 一.为什么需要System checkpoint SCN号与Datafile Che ...

  7. PyQt5学习笔记——一文详解QObject

    QObject详解笔记1 一.简介 QObject是所有Qt对象的基类 二.功能作用 2.1 对象名称.属性 2.1.1 API setObjectName("唯一名称") 给QT ...

  8. shell入门学习笔记-12-命令详解: echo与printf

    系列目录与参考文献传送门: shell入门学习笔记-序章 命令详解 admindeMacBook-Pro:myshell admin$ type cd cd is a shell builtin ad ...

  9. CoAP学习笔记——CoAP格式详解

    0 前言 CoAP是受限制的应用协议(Constrained Application Protocol)的代名词.在当前由PC机组成的世界,信息交换是通过TCP和应用层协议HTTP实现的.但是对于小型 ...

最新文章

  1. ajax学生校验学号,ajax校验数据库数据是否存在
  2. 前端工程化系列好文摘要
  3. Java:ThreadPoolExecutor解析
  4. (转)网络流-最大流 SAP算法(模板)
  5. 20100921 学习记录:关于sqlserver2005与ASP中 转换日期格式
  6. 25+ 个单色背景的网页设计实例
  7. 【算法】剑指 Offer 50. 第一个只出现一次的字符
  8. Flutter之SnackBar原理详解
  9. xp怎么设置计算机共享的打印机共享的打印机共享,XP设置打印机局域网共享的解决方法步骤...
  10. SATA学习笔记 1 --- ATA、IDE、ATAPI、SCSI、SATA、SAS等概念澄清
  11. 添加打印机无法搜索计算机,添加打印机时搜索不到如何解决 电脑搜不到打印机设备的处理办法...
  12. AWS的十条军规: 过去十年的经验总结
  13. 用python如何制作表格_Python中如何用xlwt制作表格
  14. 盛大是中国互联网最耀眼的流星
  15. moses中的数据预处理预处理操作
  16. 帧内预测——initAdiPattern
  17. Java导出多个excel并压缩下载
  18. android 本地图片模糊,Android端图片模糊的实现原理及方案
  19. 手游挂机工作室 - 二三点科普
  20. 定点数运算c语言程序,c语言 fixed-point 定点数 运算

热门文章

  1. 发现一只野生无知的小宾
  2. EP06-局域网和广域网通信原理
  3. 3吨电动葫芦毕业设计(论文+CAD图纸)
  4. 2021重庆高考成绩分数线查询,2021重庆高考分数线预测 重庆高考历年分数线一览表...
  5. 代码实现 Human-level control through deep reinforcement learning
  6. 最大熵模型学习优化案例
  7. usrp烧写固件支持gnuradio/labview
  8. 【C++OJ_静态与友元】电视机与遥控器(友元类)
  9. 当代大学生十大遗憾排行榜,最后一条90%的人都中枪!
  10. ios navigationBar 设置透明