您的位置:首页 > 编程语言 > C语言/C++

C语言操作符小结

2019-04-13 22:22 561 查看
  • C语言具有丰富的操作符,算数操作符包括+(加)、-(减)、*(乘)、/(除)和%(取模)。除了%操作符之外,其余的几个操作符不仅可以作用于整型值,还可以作用于浮点型值。
  • << 和 >> 操作符分别执行左移位和右移位操作。&、|、和 ^ 操作符分别执行位的与、或、和异或的操作。这几个操作符都要求其操作数位整型。
  • = 操作符执行赋值操作。而且,C还存在复合操作符,它把赋值符和前面那些操作符结合在一起:
    +=    -=    *=    /=    %=    <<=   >>=    &=    |=    ^=
  • 复合操作符在左右操作数之间执行指定的运算,然后把结果赋值给左操作数。
  • 单目操作符包括!(逻辑非)、~(按位取反)、-(负值)和 + (正值)。++和 --操作符分别作用于增加或减少操作数的值。这两个操作符都具有前缀和后缀的形式。前缀形式在操作数的值被修改之后才返回这个值。而后缀形式在操作数的值被修改之前就返回这个值。&操作符返回一个指向它的操作数的指针(取地址),而 * 操作符对它的操作数(必须是指针)执行间接访问操作。sizeof 返回操作数的类型的长度,以字节为单位。最后,强制类型转换(cast)用于修改操作数的数据类型。
  • 关系操作符有:
    >    >=    <    <=    !=    ==
  • 每个操作符根据它们的操作数之间是否存在指定的关系,或者返回真,或者返回假。逻辑操作符用于计算复杂的布尔表达式。对于&&操作符,只有当它的两个操作数的值都为真时,它的值才是真;对于 || 操作符,只有当它的两个操作数的值都为假时,它的值才是假。这两个操作符会对包含它们的表达式的求值过程施加控制。如果整个表达式的值通过左操作数便可决定时,,那么右操作数便不再求值。
  • 条件操作符 ...?...:... 接受三个参数,它也会对表达式的求值过程施加控制。如果第一个操作数的值为真,那么整个表达式的结果就是第二个表操作数的值,第三个操作数就不会执行。否则,整个表达式的结果就是第三个操作数的值。,而第二个操作数将不会执行。
  • 逗号表达式把两个或者多个表达式连接在一起,从左到右依次进行求值,整个表达式的值就是最右边那个子表达式的值。
  • C并不具备显示的布尔类型,布尔值使用×××表达式来表示的。然而,再表达式中混用布尔值和任意的整型值可能会产生错误。要避免这些错误,每个变量要么表示布尔型,要么表示整型,不可让它身兼两职。不要对整型变量进行布尔值测试,反之亦然。
  • 左值是个表达数,它可以出现在赋值符的左边。它表示计算机内存中的一个位置。右值表示一个值,所以它只能出现在赋值符的右边。每个左值表达式同时也是个右值,但反过来就不是这样的。
  • 各个不同类型之间的值不能直接进行运算,除非其中之一的操作数转换为另一个操作数的类型。寻常算数转换决定那个操作数将被转换。操作符的优先级决定了相邻的操作符哪个先被执行,如果它们的优先级相等,那么它们的结合性将决定它们的执行顺序。但是,这些并不能完全决定表达式的求值顺序。编译器只要不违背优先级和结合性规定,它可以自由决定复杂表达式的求值顺序。表达式的结果如果依赖于求值的顺序,那么它在本质上就是不可移植的,应该避免使用。
  • 1.有符号的右移位操作是不可移植的
  • 2.使用复合赋值福可以使程序更易于维护
  • 3.使用条件操作符替代 if 语句以简化表达式
  • 4..使用逗号操作符来消除多余的代码
  • 5.不要混用整型和布尔型值
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: