风也温柔

计算机科学知识库

java中的:逻辑运算符 5.运算符

  文章目录

  提示:以下是本篇文章正文内容,下面案例可供参考

  五、运算符

  C 语言的运算符非常多,一共有 50 多种,可以分成若干类。

  1.算术运算符

  算术运算符专门用于算术运算,主要有下面几种。

  +:正值运算符(一元运算符

  -:负值运算符(一元运算符)

  +:加法运算符(二元运算符)

  -:减法运算符(二元运算符)

  *:乘法运算符

  / :除法运算符

  % :余值运算符

  (1) + , -

  +和 - 既可以作为一元运算符,也可以作为二元运算符。所谓“一元运算符”,指的是只需要一个运算数就可以执行。一元运算符 - 用来改变一个值的正负号。

   int x = -12;

  上面示例中, - 将 12 这个值变成 -12 。

  一元运算符 + 对正负值没有影响,是一个完全可以省略的运算符,但是写了也不会报错。

   int x = -12;

    int y = +x;

  上面示例中,变量 y 的值还是 -12 ,因为 + 不会改变正负值。二元运算符 + 和 - 用来完成加法和减法。

   int x = 4 + 22;

    int y = 61 - 23;

  (2) *

  运算符 * 用来完成乘法。

  java中的:逻辑运算符_两个二进制数进行逻辑与运算_plc逻辑异或运算

   int num = 5;

    printf("%i\n", num * num); // 输出 25

  (3) /

  运算符 / 用来完成除法。注意,两个整数相除,得到还是一个整数。

   float x = 6 / 4;

    printf("%f\n", x); // 输出 1.000000

  上面示例中java中的:逻辑运算符,尽管变量 x 的类型是 float (浮点数),但是 6 / 4 得到的结果是 1.0 ,而不是 1.5 。原因就在于 C 语言里面的整数除法是整除,只会返回整数部分,丢弃小数部分。如果希望得到浮点数的结果,两个运算数必须至少有一个浮点数,这时 C 语言就会进行浮点数除法。

   float x = 6.0 / 4; // 或者写成 6 / 4.0

    printf("%f\n", x); // 输出 1.500000

  上面示例中, 6.0 / 4 表示进行浮点数除法,得到的结果就是 1.5 。下面是另一个例子。

   int score = 5;

    score = (score / 20) * 100;

  上面的代码,你可能觉得经过运算, score 会等于 25 ,但是实际上 score 等于 0 。这是因为 score / 20 是整除,会得到一个整数值 0 ,所以乘以 100 后得到的也是 0 。为了得到预想的结果,可以将除数 20 改成 20.0 ,让整除变成浮点数除法。

   score = (score / 20.0) * 100;

  (4) %

  运算符 % 表示求模运算,即返回两个整数相除的余值。这个运算符只能用于整数,不能用于浮点数。

   int x = 6 % 4; // 2

  负数求模的规则是,结果的正负号由第一个运算数的正负号决定。

   11 % -5 // 1

    -11 % -5 // -1
    -11 % 5 // -1

  上面示例中,第一个运算数的正负号( 11 或 -11 )决定了结果的正负号。

  (5)赋值运算的简写形式

  如果变量对自身的值进行算术运算,C 语言提供了简写形式,允许将赋值运算符和算术运算符结合成一个运算符。

  +=

  -=

  *=

  /=

  两个二进制数进行逻辑与运算_java中的:逻辑运算符_plc逻辑异或运算

  %=

  下面是一些例子。

   i += 3; // 等同于 i = i + 3

    i -= 8;  // 等同于 i = i - 8
    i *= 9;  // 等同于 i = i * 9
    i /= 2;  // 等同于 i = i / 2
    i %= 5;  // 等同于 i = i % 5

  2.自增运算符,自减运算符

  C 语言提供两个运算符,对变量自身进行 + 1 和 - 1 的操作。

  ++ :自增运算符

  – :自减运算符

   i++; // 等同于 i = i + 1

    i--; // 等同于 i = i - 1

  这两个运算符放在变量的前面或后面,结果是不一样的。 ++var 和 --var 是先执行自增或自减操作,再返回操作后 var 的值; var++ 和 var-- 则是先返回操作前 var 的值,再执行自增或自减操作。

   int i = 42;

    int j;
    j = (i++ + 10);
    // i: 43
    // j: 52
    j = (++i + 10)
    // i: 44
    // j: 54

  上面示例中,自增运算符的位置差异,会导致变量 j 得到不同的值。这样的写法很容易出现意料之外的结果,为了消除意外,可以改用下面的写法。

   / 写法一 /

    j = (i + 10);
    i++;
    /* 写法二 */
    i++;
    j = (i + 10);

  上面示例中,变量 i 的自增运算与返回值是分离的两个步骤,这样就不太会出错,也提高了代码的可读性。

  3.关系运算符

  C 语言用于比较的表达式,称为“关系表达式”( ),里面使用的运算符就称为“关系运算符”( ),主要有下面6个。

  大于运算符

  20 返回 0 。

   关系表达式常用于 if 或 while 结构。

    if (x == 3) {
      printf("x is 3.\n");
    }

  注意,相等运算符 == 与赋值运算符 = 是两个不一样的运算符,不要混淆。有时候java中的:逻辑运算符 5.运算符,可能会不小心写出下面的代码,它可以运行,但很容易出现意料之外的结果。

   if (x = 3) ...

  上面示例中,原意是 x == 3 ,但是不小心写成 x = 3 。这个式子表示对变量 x 赋值 3 ,它的返回值为3 ,所以 if 判断总是为真。为了防止出现这种错误,有的程序员喜欢将变量写在等号的右边。

   if (3 == x) ...

  java中的:逻辑运算符_两个二进制数进行逻辑与运算_plc逻辑异或运算

  这样的话,如果把 == 误写成 = ,编译器就会报错。

   / 报错 /

    if (3 = x) ...

  另一个需要避免的错误是,多个关系运算符不宜连用。

   i = 2;

  6.逗号运算符

  逗号运算符用于将多个表达式写在一起,从左到右依次运行每个表达式。

   x = 10, y = 20;

  上面示例中,有两个表达式( x = 10 和 y = 20 ),逗号使得它们可以放在同一条语句里面。逗号运算符返回最后一个表达式的值,作为整个语句的值。

   int x;

    x = 1, 2, 3;

  上面示例中,逗号的优先级低于赋值运算符,所以先执行赋值运算,再执行逗号运算,变量 x 等于 1 。

  7.运算优先级

  优先级指的是,如果一个表达式包含多个运算符,哪个运算符应该优先执行。各种运算符的优先级是不一样的。

   3 + 4 * 5;

  上面示例中,表达式 3 + 4 5 里面既有加法运算符( + ),又有乘法运算符( )。由于乘法的优先级高于加法,所以会先计算 4 * 5 ,而不是先计算 3 + 4 。如果两个运算符优先级相同,则根据运算符是左结合,还是右结合,决定执行顺序。大部分运算符是左结合(从左到右执行),少数运算符是右结合(从右到左执行),比如赋值运算符( = )。

   5 * 6 / 2;

  上面示例中, 和 / 的优先级相同,它们都是左结合运算符,所以从左到右执行,先计算 5 6 ,再计算 6 / 2 。运算符的优先级顺序很复杂。下面是部分运算符的优先级顺序(按照优先级从高到低排列)。

  圆括号( () )

  自增运算符( ++ )java中的:逻辑运算符,自减运算符( – )

  一元运算符( + 和 - )

  乘法( * ),除法( / )

  加法( + ),减法( - )

  关系运算符( < 、 > 等)

  赋值运算符( = )

  由于圆括号的优先级最高,可以使用它改变其他运算符的优先级。

   int x = (3 + 4) * 5;

  上面示例中,由于添加了圆括号,加法会先于乘法进行运算。

  完全记住所有运算符的优先级没有必要,解决方法是多用圆括号,防止出现意料之外的情况,也有利于提高代码的可读性。

  文章来源:https://blog.csdn.net/qq_40670171/article/details/130000048