c语言操作符小结

  • 算数操作符(+,-,,/,%)
    +,-,
    ,正常运算就好,但"/"和"%"较为特殊需要注意!
    "/":
    1)当该符号两端数据类型都为int时,输出类型为int 。若符号两端数据类型不同时,则按精度小的类型进行计算。精度大的数被隐式类型转换(编译器自动转换)为精度小的类型。
    2)当除数为一个常数0时,编译器汇报编译错误。当除数为一个一个变量,变量的值为0时,编译通过但运行时会错。
    "%":
    1)该符号只针对int 整型有效。
    2)当符号右端为常数0或变量值为0时,情况与"/"相同。
  • 移位操作符(<<,>>)
    ps:不要对负数进行移位操作,这是未定义行为!
    "<<"左移操作符:
    1)按二进制移位;
    2)左移n位相当于十进制的*2的n次方;
    3)左边抛弃,右边补0;
    4)左移后原数值在没有被赋值的情况下是不变的;
    #include<stdio.h>
    #include<stdlib.h>
    int main() {
    int num = 10;
    printf("%d\n",num<<1 );
    printf("%d\n", num);
    printf("%d\n", num=num<<1);
    system("pause");
    return 0;
    }

    结果为:

    ">>"右移操作符:
    1)按二进制移位;
    2)右移n位相当于十进制的 / 2的n次方;
    3)逻辑移位:左边补0,右边抛弃
    算数移位:左边补符号位,右边抛弃
    4)右移后原数值在没有被赋值的情况下是不变的;(情况同上,不再做过多赘述)

  • 位操作符(&,|,^,~)
    ps:按二进制位操作,操作数必须为整数
    "&":
    全1为1,否则为0
    "|":
    全0为0,否则为1
    "^":
    相同为0,相异为1
    "~":
    0变1,1变0
  • 赋值操作符( = )
    修改变量的值,可以连续连续赋值(例:a=x=y+1),但强烈不建议这么写,可读性差。
    ps:此处补充一点:赋值与初始化的区别
    赋值:修改值
    初始化:申请内存空间,放值到内存中
  • 复合操作符(+= ,-= ,*= ,/= ,%= ,>>= ,<<= ,&= ,|= ,^= )
    复合运算符与其他运算符功能一样,但可以使代码更简洁
    int x=10;
    x=x+10;
    x+=10;//复合赋值,效果与上式相同
  • 单目操作符(!,- ,+ ,& ,sizeof ,~,--,++,* ,(类型))
    "!"逻辑反操作
    "-"负值
    "+"正值
    "&"取地址
    "sizeof"操作数的类型长度(以字节为单位):
    编译过程中求值,运行时才申请内存
    "~"对一个数二进制按位取反
    "--"前置,后置 --
    "++"前置,后置++:
    前置后置的区别:
    a)不取表达式的值,等价
    b)取表达式的值:
    前置,返回自增(自减)后的值;
    后置,返回自增(自减)前的值
    " * "解引用操作符
    "(类型)"强制类型转换:
    此处会发生“截断”现象,即把一个占字节数多的变量赋值给一个占字节数少的变量,会把高位截断。把一个占字节少的变量赋值给一个占字节数多的变量,高位会进行补位(补符号位)
  • 关系操作符(> , >= ,< ,<= ,!= ,== )
    在前面已经介绍了这些操作符,在此不再赘述,注意 = 和 == 书写时不要出错即可。
  • 逻辑操作符(&& ,|| )
    "&&":逻辑与
    &&相当于and
    " || ":逻辑或
    || 相当于 or
    “短路求值”:
    对于&&,若左侧表达式值为假,那么右侧不再求值,整个表达式结果为假
    对于 || ,若左侧表达式值为真,那么右侧不再求值,整个表达式结果为真
  • 条件操作符(表达式1 ?表达式2 :表达式3)
    如果表达式1结果为真,则返回表达式2的值,否则返回表达式3的值
    ps:优先级最低!!!
  • 逗号表达式(表达式1,表达式2,表达式3)
    整个表达式的结果为最后一个表达式的结果。
  • 下标引用操作符( [ ] )
    数组名+索引值,调用数组的值
  • 隐式类型转换
    类似于char/short这样的类型,参与算数运算的时候会触发整型提升,即隐式转换为int 型再参与运算!
  • 原文地址:https://blog.51cto.com/14233363/2396812

    时间: 2024-10-07 16:59:10

    c语言操作符小结的相关文章

    c语言操作符优先级

    运算符 结合性 () [] -> . 自左至右 ! ~ ++ -- - (type) * & sizeof 自右至左 * / % 自左至右 + - 自左至右 << >> 自左至右 < <= > >= 自左至右 == != 自左至右 & 自左至右 ^ 自左至右 | 自左至右 && 自左至右 ||  自左至右 ?: 自右至左 = 自右至左 , 自左至右 1.优先级最高的并不是真正意义上的运算符,包括数组下标,函数调用操作符和

    被C语言操作符优先级坑了

    今天有一个枚举的题目的代码是这样的: 重点在于maxXor这个函数的实现,枚举两个数字,其中maxr保存了最大值的 i 异或 j , 可是这个程序执行结果大大出乎意外-_-. 然后就把 i 异或 j 的结果临时保存在int,进行比较,程序正确的执行了.原来是被操作符优先级坑到了.位操作的优先级比比较操作符的优先级更低. #include <map> #include <set> #include <list> #include <cmath> #includ

    C/C++语言 预处理小结

    预处理功能主要包括宏定义,文件包含,条件编译三部分.分别对应宏定义命令,文件包含命令,条件编译命令三部分实现. 预处理过程读入源代码,检查包含预处理指令的语句和宏定义,并对源代码进行响应的转换.预处理过程还会删除程序中的注释和多余的空白字符. 预处理指令是以#号开头的代码行.#号必须是该行除了任何空白字符外的第一个字符.#后是指令关键字,在关键字和#号之间允许存在任意个数的空白字符. 整行语句构成了一条预处理指令,该指令将在编译器进行编译之前对源代码做某些转换. 指令             用

    c语言操作符总结

    C语言操作符总结:分类:算术操作符,移位操作符,位操作符,赋值操作符,复合操作符,单目操作符,关系操作符,逻辑操作符,条件操作符,逗号表达式,下标引用.函数调用和结构成员.一.算术操作符--"+,-,*,/,%"*注:(1)%(求余)操作符的两个操作数必须为整数,返回的是整除之后的余数.而其他操作符可以用于整数和浮点数.(2)/(除法)操作符的两个操作数若都为整数,执行整数除法.而只要有浮点数就执行浮点数除法.二.移位操作符--"右移>> , 左移<<

    关于C语言操作符的总结

    整理了一些C语言中的操作符,简单介绍了一下部分重要操作符,也算学习操作符的一些收获吧. 一.C语言操作符分类算数操作符.移位操作符.位操作符.赋值操作符.单目操作符.关系操作符.逻辑操作符.条件操作符二.操作符介绍1.算数操作符:+ - / %a.除了%操作符之外,其他的几个操作符可以作用于整数和浮点数b.对于/操作符,如果两个数都为整数,执行整数除法.而只要有浮点数执行的就是浮点数除法c.%操作符的两个操作数必须为整数,返回的是整除之的余数2.移位操作符 <<左移 >>右移a.左

    C语言操作符

       在这里,为初学C语言的小伙伴们介绍几种基本的操作符.希望对大家的学习有所帮助!   1.算数操作符      "+(加)","-(减)","*(乘)","/(除)","%(取余)",在此着重介绍"%"取余操作,简单举 个实例,12%5=2,但是,要注意符号的两侧必须为整形数据. 2.移位操作符 "<<(左移)"">>(右移)&q

    C语言操作符学习总结

    c语言中关于操作符部分的学习,可以主要分为两个部分:操作符和表达式. 这里首先是列举各种操作符,在C语言中,一般主要的操作符有这么几种:算数操作符,移位操作符,位操作符,赋值操作符,单目运算符,关系操作符,逻辑操作符,条件操作符,逗号表达式以及比较特殊的几个操作符. 算数操作符 算数操作符,主要是:+ , -,  *,  /, % 这些都是比较常见的,不光是在C语言中学习到,事实上从小我们学习数学都常用到他们,所以这里没什么多说的,就是有几点注意事项: 除了取模运算,也就是取余数的%操作符,其他

    C语言操作符自我总结

    1.算数操作符:+? ? -? ?*? ? /? ? ?% 注意点: %号 只能用于整数2.除数不能为0 /号,如果两数都是整数,结果为整数:如果有一个数为小数,结果为小数. 整型提升:凡是针对char,short型的数学运算,此时都会隐式转换为?int?型(因为CPU运算一般以整型为基本单位)算数转换: long doubledouble 8个float 4个unsigned long intlong int 4个long long 8个unsigned intint 4个short 2个字节

    go语言 hello 小结

    在编译go语言的时候: 写了一段这样的代码 package main import "fmt" func main() {     fmt.Println("Hello, 世界") } 运行的时候报这样的错误 syntax error: unexpected semicolon or newline befor { 调试了很久之后发现是 花括号的原因 go语言方法的花括号不能像C#一样放在方法名的下面,开头的花括号需要放在方法名的前面 package main im