【C语言复习】第六篇、关于C语言操作符的知识

这篇具有很好参考价值的文章主要介绍了【C语言复习】第六篇、关于C语言操作符的知识。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

第一部分、常见操作符

第二部分、每个操作符的具体使用        

1、算术操作符

1.1、除法运算符 / 

1.2、取模运算符 %

2、移位操作符

2.1、左移 <<

2.2、右移 >>

 3、位操作符

3.1、按位异或的妙用

3.2、按位与的妙用

4、单目操作符

4.1、逻辑反操作符 !

 4.2、sizeof操作符

 4.3、按位取反~

4.4、强制类型转换

5、三目操作符(条件操作符)

6、逗号表达式

第三部分、往期文章


第一部分、常见操作符

      操作符类型 相应的操作符
算术操作符 +        减       乘       除/        取模%
移位操作符 左移<<        右移>>
位操作符

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

复合赋值操作符

加等于+=     减等于-=       乘等于*=       模等于/=     余等于%=     按位与&=       

按位异或等于^=       按位或等于|=        右移等于>>=       左移等于<<=

单目操作符(只有一个操作数)

逻辑取反操作!        取地址&        计算操作数的类型长度sizeof        按位取反~

前置、后置++        前置、后置--        解引用操作符(间接访问)        

强制类型转换(类型)X   地(X为变量或者指针)

关系操作符

大于>        大于等于>=        小于<        

小于等于<=        等于等于==        不等于!=

 逻辑操作符 逻辑与&&        逻辑或||
条件操作符(三目操作符) exp1 ? exp2 : exp3
逗号表达式 从左往右执行exp1,exp2,exp3,exp4
下标引用、函数调用和结构成员 下标引用[]        函数调用()        访问结构成员.         指针访问结构体成员->

第二部分、每个操作符的具体使用        

        这里主要记录一些使用这些操作符的基本知识,有些太简单,我就不没有记录

1、算术操作符

1.1、除法运算符 / 

        如果除号两边都是整数执行的是整数除法如果被除数与除数之间有一个是小数,那么计算结果就是小数。示例如下:

【C语言复习】第六篇、关于C语言操作符的知识

1.2、取模运算符 %

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

2、移位操作符

        注意:移位操作符的操作数只能是整数

2.1、左移 <<

        向左移位,右边永远补0。小技巧:对于偶数,左移1位等价于除以2,因此在FPGA内部便可用左移的方式代替除法,减少逻辑资源的使用。

2.2、右移 >>

        当操作数为正数时:向右移位,左边补0。

        当操作时为负数时:分为两种情况:(取决于编译器)

方式一、逻辑移位:左边用0填充,右边丢弃(包括符号位)

方式二、算术移位:左边用该值的符号位填充,右边丢弃(一般情况下是算数右移

验证编译器的移位方式,示例如下:

        因为a = -1,其在内存中的存储方式为:11111111_11111111_11111111_11111111,根据算术移位,其值不发生改变。

        如果该编译器的右移方式为逻辑移位时:01111111_11111111_11111111_11111111,该值为一个很大的正数。

【C语言复习】第六篇、关于C语言操作符的知识

 3、位操作符

        合理的使用位操作符,得到的代码可太妙了。其次注意:位操作符的操作数也为整数。

3.1、按位异或的妙用

        示例、不定义中间变量的方式,实现两个整数 a,b值之间的互换。

int a = 3,b =5;
//按位异或的方式
a = a ^ b;
b = a ^ b;//b = a^b^b
a = a ^ b;//a = a^b^a

//相加的方式,容易溢出
a = a + b;//8(缺点,a,b值太大时容易溢出)
b = a - b;//8 - 5 = 3
a = a - b;//8 - 3 = 5

3.2、按位与的妙用

        示例、求一个整数存储在内存中的二进制中1的个数。

方法1、常规思路

int main()
{
        int a = -1;
        int count = 0;
        for (int i = 0;i < 32; i++)
        {
            if (a & (1<<i))//注意这里的写法,不用去定义一个变量让他去移位
            {
                count++;
            }
    
        }
        printf("%d\n", count);
        return 0;
}

方法2、大佬思路

int main()
{
        int num = -1;
        int i = 0;
        int count = 0;//计数
        while (num)
        {
            count++;
            num = num & (num - 1);//num 与 num - 1 相与
        }
        printf("二进制中1的个数 = %d\n", count);
        return 0;
}

4、单目操作符

4.1、逻辑反操作符 !

        注意:C语言中,0就是假,非0就为真。 a = 100 ;!a = 0;

【C语言复习】第六篇、关于C语言操作符的知识

 4.2、sizeof操作符

        sizeof的作用:以字节为单位给出与变量或类型在内存中所占的空间大小。

        注意:1. sizeof计算字符串的时候会算入\0。

                   2. sizeof括号内部的表达式是不参与运算的!结果只有a的类型决定,定义a的时候已经给a开辟了空间。

如下图:

【C语言复习】第六篇、关于C语言操作符的知识

         关于sizeof的用法还是很多的,例如下面两张截图展示的内容。

例如1、计算不同类型变量所占空间大小

【C语言复习】第六篇、关于C语言操作符的知识

例如2、用来计算整型数组的长度(会常用!!!)

        数组长度再进行传参的时候,只能在外部提前计算好数组的长度,随后再进行传参。

【C语言复习】第六篇、关于C语言操作符的知识

 4.3、按位取反~

        对某个数取反,是将其在内存中的二进制数据(补码)进行按位取反。

        这里为啥是-1?应该懂了吧。

【C语言复习】第六篇、关于C语言操作符的知识

4.4、强制类型转换

        变量前面右括号,括号里面还有类型,那么就是强制类型转换。

(数据类型)变量 

  • 强制类型的正常用法 

【C语言复习】第六篇、关于C语言操作符的知识

  • 强制类型的更妙的用法(涉及到后面的指针的一些知识)

         void* :示任何类表型的地址都可以放进去。无论是char*,int*还是其他指针类型,都可以用void*来存放。

        用通俗的话来说,void* 就是指针类型变量的垃圾桶,可以存放任何类型变量的地址。

        因此,利用这一点,就有了一个应用场景,在编写函数的入口参数时,我不知道传入该函数的参数是什么指针类型,那么此时我先用void*来存放该指针,等我函数里面要用到该指针的时候我再去进行强制类型转换。妙的压批!

5、三目操作符(条件操作符)

        说实话,我个人认为该操作符在C语言里面经常被人遗忘,也可能是我接触的C太少。但是这个操作符在verilog HDL里面可是一个宠儿,大宠儿

        在verilog里面和assign赋值语句一起用,能够解决输出结果存在一个周期延迟的问题。这里不探讨太多,后面关于verilog 中如何使用,我会详细解释。

exp1 ?exp2 :exp3;

exp1成立,整个表达式返回exp2的值,如果exp1不成立,整个表达式返回exp3的值。

【C语言复习】第六篇、关于C语言操作符的知识

6、逗号表达式

        逗号表达式,就是用逗号隔开的多个表达式。

        逗号表达式,从左向右依次执行整个表达式的结果是最后一个表达式的结果

示例如下:用来简化代码。

int main()
{
    
    a = get_val();
    count_val(a);
    while (a > 0)
    {
        a = get_val();
        count_val(a);
    }
    return 0; 
}
//等价于
int main()
{
    while (a = get_val(), count_val(a),a > 0)
    {
        
    }
    return 0; 
}

第三部分、往期文章

        希望我的笔记对你有帮助,有需要的小伙伴可以看一下往期的文章🤪🤪🤪

        【C语言复习】第一篇、关于我的C语言的复习路线_大屁桃的博客-CSDN博客

        【C语言复习】第二篇、VS2017软件的使用以及常用小技巧_大屁桃的博客-CSDN博客 

        【C语言复习】第三篇、Gitee码云的创建和使用_大屁桃的博客-CSDN博客

        【C语言复习】第四篇、有关C语言数据类型的知识_大屁桃的博客-CSDN博客

       【C语言复习】第五篇、变量,常量,字符串,转义字符的知识_大屁桃的博客-CSDN博客

        文章来源地址https://www.toymoban.com/news/detail-502945.html

到了这里,关于【C语言复习】第六篇、关于C语言操作符的知识的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Postgresql关于JSON、JSONB的操作符、处理函数(持续更新)

    (只列举本次用到的函数,其他函数在文章后面有详解) SELECT answer_id,  jsonb_array_elements(option_ids)::INTEGER  AS option_id FROM db_live_answer  WHERE survey_code=\\\'No.20230605165428002\\\'      如果所有json数组都包含两个新列的两个元素,那么使用固定路径,如dmfay的答案。 否则,你应该使用jso

    2024年02月08日
    浏览(41)
  • <C语言> 操作符

    加法(+):用于将两个操作数相加。 减法(-):用于将第一个操作数减去第二个操作数。 乘法(*):用于将两个操作数相乘。 除法(/):用于将第一个操作数除以第二个操作数。 取模(%):用于求两个操作数相除的余数。 乘法、除法和取模具有相同的优先级,高于加法

    2024年02月12日
    浏览(55)
  • 【C语言】操作符

    算术操作符 移位操作符 位操作符 赋值操作符 单目操作符 关系操作符 逻辑操作符 条件操作符 逗号操作符 下标引用、函数调用和结构成员操作符 除了 % 操作符之外,其他的几个操作符可以作用于整数和浮点数。 对于 / 操作符如果两个操作数都为整数,执行整数除法。而只

    2024年01月16日
    浏览(53)
  • c语言---操作符(详解)

    算术操作符: + 、- 、*、/ 、% 移位操作符: 位操作符: | ^ ` 赋值操作符: = 、+= 、 -= 、 = 、 /= 、%= 、= 、= 、= 、|= 、^= 单⽬操作符: !、++、–、、 、+、-、~ 、sizeof、(类型) 关系操作符: 、= 、 、= 、 == 、 != 逻辑操作符: 、|| 条件操作符: ? : 逗号表达式: , 下标引⽤: [

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

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

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

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

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

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

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

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

    2024年02月05日
    浏览(51)
  • C语言初级<操作符>

    C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。 本篇文章是基于C语言,对入门小知识操作符的讲解,展

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

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

    2024年02月14日
    浏览(40)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包