初阶C语言——详解操作符(1)

这篇具有很好参考价值的文章主要介绍了初阶C语言——详解操作符(1)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Hello,我们又见面了,最近不知道大家是否在持续输出代码呢?代码能力是否提高了呢?今天让我们来一起学习操作符,操作符在我们学习语言中很重要,我们要知道每个操作符的作用和用法,下面开始我们的学习。

  1. 操作符分类:

算术操作符
移位操作符
位操作符
赋值操作符
单目操作符
关系操作符
逻辑操作符
条件操作符
逗号表达式
下标引用、函数调用和结构成员

2算数操作符

     +    -   *   /     %

加(+) 减(-) 乘(*)和数学的一样,和大家讲一讲除(/)和取模(%)的用法。

#include<stdio.h>
int main()
{
	float a = 5 / 2;
	printf("%f", a);
	return 0;
}

初阶C语言——详解操作符(1),c语言,开发语言
我们可以看到虽然是浮点型,但是求出来的不是我们想要结果,这是为什么呢

原因是我们要求小数点的后面位的时候,5和2必须要有一个小数,比如5.0或者2.0,让我们加上看一看结果吧

#include<stdio.h>
int main()
{
	float a = 5 .0/ 2;
	printf("%f", a);
	return 0;
}

初阶C语言——详解操作符(1),c语言,开发语言
还有我们的取模符号

首先取模符号左边和右边必须是整型,结果是余数

#include<stdio.h>
int main()
{
	int a = 9 % 2;
	printf("%d", a);
	return 0;
}

这样写就对了

1. 除了 % 操作符之外,其他的几个操作符可以作用于整数和浮点数。
2. 对于 / 操作符如果两个操作数都为整数,执行整数除法。而只要有浮点数执行的就是浮点数除法。
3. % 操作符的两个操作数必须为整数。返回的是整除之后的余数。

3. 移位操作符

在讲位移操作符的时候我们得先了解一个东西,那就是二进制,因为我们的移位操作符操作的是二进制的补码

我们的整数是可以用二进制来表示的,整数的二进制有三种表达形式,分别是
原码
反码
补码
其中正数的二进制,反码补码原码都相等,但是负数的不相等
负整数数的反码是原码符号位不变,其余按位取反,补码是反码加1

下面举几个例子来让大家更好的了解二进制

大家可能对二进制的计算不是特别明白,但是大家肯定知道十进制,十进制就是我们生活中常用的数字,满十进一位,就像9到10一样,那我们的二进制也是一样,满2就往前进一位,比如111就是十进制的7
初阶C语言——详解操作符(1),c语言,开发语言
计算结果就是我们常用的十进制

我们简单了解二级制位,那么让我们来看一看原码反码补码
初阶C语言——详解操作符(1),c语言,开发语言
正整数的原码反码补码是一样的,比如5的原码是

00000000000000000000000000000101 原码
00000000000000000000000000000101 反码
00000000000000000000000000000101 补码

而我们的位移操作符是对二进制的补码进行操作的
左移操作符<<

#include<stdio.h>
int main()
{
	int a = 5<<1;

	printf("%d", a);
	return 0;
}

初阶C语言——详解操作符(1),c语言,开发语言
初阶C语言——详解操作符(1),c语言,开发语言

学会正整数的左移操作符,让我们来学习一下负数的吧

#include<stdio.h>
int main()
{
	int a = -5 << 1;

	printf("%d", a);
	return 0;
}

初阶C语言——详解操作符(1),c语言,开发语言
这样解释大家一定明白了吧,所以左移的规则是右边舍弃,左边加0。
右移操作符>>
右边操作符和左移也差不多

  1. 逻辑移位
    左边用0填充,右边丢弃
  2. 算术移位
    左边用原该值的符号位填充,右边丢弃

下面举个例子

#include<stdio.h>
int main()
{
	int a = 5 >> 1;

	printf("%d", a);
	return 0;
}

初阶C语言——详解操作符(1),c语言,开发语言
算数移位的右边是加符号位

补充:补码变成反码也可以先取反然后加1,符号位不变

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

int num = 10;
num>>-1;//error

4. 位操作符

& //按位与
| //按位或
^ //按位异或

首先他们操作的都是整数

  • 按位与&
#include<stdio.h>
int main()
{
	int a = 5 & 3;

	printf("%d", a);
	return 0;
}

初阶C语言——详解操作符(1),c语言,开发语言
这里的按位与我们可以这样理解,首先我们要把他们的二进制位都写出来,就像上面的一样然后对齐,有一个0的结果就是0,全部为1的才是1。

  • 按位或|
#include<stdio.h>
int main()
{
	int a = -1|3;

	printf("%d", a);
	return 0;
}

初阶C语言——详解操作符(1),c语言,开发语言

所以按位或是有一个1就是1

  • 按位异或
#include<stdio.h>
int main()
{
	int a = -1^3;

	printf("%d", a);
	return 0;
}

初阶C语言——详解操作符(1),c语言,开发语言

这样我们就位操作符讲明白了,在给大家补充一点,这些操作符都是双目操作符,什么是双目操作符呢,比如3&5,&两边的操作数分别是3和5,那么&就是双目操作符,大家看到&是不是会想到取地址符号,当然他们肯定是不同的,取地址&是个单目操作符

下面是一个笔试题,不能创建临时变量(第三个临时变量)来交换数

#include<stdio.h>
int main()

{
	int a = 20;
	int b = 10;
	a = a ^ b;
	b = a ^ b;
	a = a ^ b;
	printf("%d %d", a, b);
	return 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;
这样的写法是不是更加清晰爽朗而且易于调试。

所以我们在给我们的变量赋值的时候一定要看起来至少能让人明白a = x = y+1像这个代码的话先把y+1赋值给x在赋值给y,这样的可读性并没有分开赋值看起来的明白
复合赋值符
初阶C语言——详解操作符(1),c语言,开发语言
6. 单目操作符
初阶C语言——详解操作符(1),c语言,开发语言

逻辑反操作

相当于把真变成假,把假变成真比如我的if函数中if(1)就是真,但是我们如果加上!就变成if(!1)就是逻辑假

负值和正值
插入一个代码大家马上就能理解

#include<stdio.h>
int main()
{
	int a = -4;
	printf("%d", -a);
	return 0;
}

编译器显示的答案就是4
正值就和我们的正数一样

  • . 取地址&

就是取出该变量在我们内存的位置

  • 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;
}

在X86编译器下地址的字节是4位,在64位的平台下,字节大小是8位

sizeof中最难的就是和数组组合,因为大家可能总是会有一个误解,举个例子给大家。

#include <stdio.h>
void test1(int arr[])
{
	printf("%d\n", sizeof(arr));//(2)
}
void test2(char ch[])
{
	printf("%d\n", sizeof(ch));//(4)
}
int main()
{
	int arr[10] = { 0 };
	char ch[10] = { 0 };
	printf("%d\n", sizeof(arr));//(1)
	printf("%d\n", sizeof(ch));//(3)
	test1(arr);
	test2(ch);
	return 0;
}
//问:
//(1)、(2)两个地方分别输出多少?
//(3)、(4)两个地方分别输出多少?

初阶C语言——详解操作符(1),c语言,开发语言
只要大家知道函数在传数组的时候传过去的首元素的地址,相信大家应该就能理解了,之前的文章也专门讲过,不会的往前看看就行了。

  • ~
    是按位取反,相当于把一个二进制数1的部分变成0,0的部分变成1
#include<stdio.h>
int main()
{
	int a = 2;
	printf("%d", ~a);
	return 0;
}

初阶C语言——详解操作符(1),c语言,开发语言

- 前置++和–
先++或者–然后再使用

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

	int a = 1;
	int b = ++a;//a=a+1 b=a
	printf("%d %d", a, b);
	return 0;
}
#include<stdio.h>
int main()
{

	int a = 1;
	int b = --a;//a=a-1 b=a
	printf("%d %d", a, b);
	return 0;
}

后置++和–


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

	int a = 1;
	int b = a++;//b=a a=a+1
	printf("%d %d", a, b);
	return 0;
}
#include<stdio.h>
int main()
{

	int a = 1;
	int b = a--;//b=a a=a-1
	printf("%d %d", a, b);
	return 0;
}

解引用操作符*

一般用在指针,比如想知道指针变量的内容的时候我们就可以用*来知道他的内容,大家是不是可以发现他和&取地址刚刚好相反

()这个符号是强制转换,举个简单的例子


#include<stdio.h>
int main()
{
	float a = 5.0;
	int c = (int)a / 2;
	printf("%d", c);
	return 0;
}

虽然是浮点型,但是经过我们的强制转换,最后a是一个整型

  • 7. 关系操作符
    初阶C语言——详解操作符(1),c语言,开发语言

警告:一定要区分==和=
今天的分享就到这里,期待下次和你们见面文章来源地址https://www.toymoban.com/news/detail-527315.html

到了这里,关于初阶C语言——详解操作符(1)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【C语言初阶】操作符之 位运算符详解(“ << ”,“ >> ”,“ & ”,“ | ”,“ ^ ”,“ ~ ”)

    目录 C语言中六种位运算符: 一、位移运算符 1、移位运算符简介 2、先要了解一点 3、 左移运算符 4、右移运算符 5、警告 二、 1、 按位与 2、| 按位或 3、^ 按位异或 4、~ 取反 4、例子  按位与 | 按位或 ^ 按位异或 ~取反 右移 左移 位运算符用来对二进制位进行操作,C语言中

    2024年02月06日
    浏览(34)
  • 【C语言初阶】带你轻松玩转所有常用操作符(1) ——算数操作符,移位操作符,位操作符

    君兮_的个人主页 勤时当勉励 岁月不待人 C/C++ 游戏开发 Hello,这里是君兮_,最近要准备期末复习了,可能更新的就不会那么频繁了,下个星期恢复正常更新。 今天给大家带来的是操作符详解,由于这部分的内容比较多,可能会分成几部分讲,今天带来的是第一部分的内容,废

    2024年02月11日
    浏览(44)
  • 【C语言初阶(16)】操作符2

    在 C 语言中,使用关系操作符来判断两个数之间的大小关系。 关系运算符都是双目运算符 ,其结合性均为从左到右。 关系运算符的优先级低于算术运算符,高于赋值运算符。 逻辑运算符获得的是一个逻辑值, 逻辑值只有 “ 真 ” 或 “ 假 ”两种状态 。 运算符 含义 优先级

    2024年02月16日
    浏览(37)
  • 【初阶C语言】操作符1--对二进制的操作

    前言:本节内容介绍的操作符,操作的对象是二进制位。所以前面先介绍整数的二进制位 1.二进制介绍 (1)整数的二进制表示形式有三种:原码、反码和补码。 (2)原码、反码和补码的长度有数据类型来决定,如整数,就是四个字节,转化后是三十二位比特位,所以一个整

    2024年02月09日
    浏览(38)
  • 【初阶C语言】操作符2---表达式求值

    前言:本节重点介绍操作符的使用,如,优先级高低、类型转换等 前言:逻辑操作符包括 逻辑与() 和 逻辑或(||) ,操作对象:两个 1.逻辑与() (1)定义 的字面意思就是并且。如:AB,需要A和B同时成立,整体才成立。 (2)图形解释  0表示假,所以需要A和B同时满足

    2024年02月09日
    浏览(49)
  • C语言---操作符详解

    算术操作符 移位操作符 位操作符 赋值操作符 单目操作符 关系操作符 逻辑操作符 条件操作符 逗号操作符 下标引用、函数调用和结构成员。 移位操作符,移动的是二进制位。 警告:对于移位运算符,不要移动负位数,这个是标准定义的。 3.1.1、原码、反码、补码介绍 整数

    2024年02月07日
    浏览(39)
  • C语言——操作符详解

    哈喽,大家好,今天我们来学习C语言中的各中操作符。 目录 1.操作符的分类 2.算数操作符 整数的二进制表示 3.位移操作符 3.1左移操作符 3.2右移操作符 4.位操作符 5.赋值操作符 6.单目操作符 6.1 单目操作符介绍 ~ 的用法: 6.2 sizeof 和 数组 7.关系操作符 8.逻辑操作符 9. 条件操

    2024年02月05日
    浏览(48)
  • C语言:“~”操作符详解

    ~:含义及用法举例 文章目录 前言 一、“~”是什么? 二、原码、反码及补码 1.简介 2.用法举例 ①正整数 ②负整数 ③零 三、“~”操作符 1.简介 2.用法举例 ①正整数 ②负整数 ③零 本文在简单介绍原码反码补码的基础上,介绍“~”操作符的用法。 ~:一种单目操作符,即对

    2024年02月10日
    浏览(51)
  • 【C语言】操作符----详解

    💓博客主页:江池俊的博客 ⏩收录专栏:C语言初阶之路 👉其他专栏:数据结构探索 💻代码仓库:江池俊的代码仓库 🍁 如果觉得博主的文章还不错的话,请点赞👍收藏🌟 三连支持一下博主💞 目录 操作符分类:  💨 算术操作符  💨 移位操作符  原码、反码、补码

    2024年02月14日
    浏览(35)
  • 【C语言】操作符详解

    👦个人主页:Weraphael ✍🏻作者简介:目前正在回炉重造C语言(2023暑假) ✈️专栏:【C语言航路】 🐋 希望大家多多支持,咱一起进步!😁 如果文章对你有帮助的话 欢迎 评论💬 点赞👍🏻 收藏 📂 加关注😍 算术操作符 位移操作符 位操作符 赋值操作符 单目操作符 关

    2024年02月16日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包