www.9778.com 5

www.9778.com【C语言篇】☞ 4. 运算符

   由于运算符数量不小,死记硬背下来要花点功夫。分析规律我们可以以类型来制定顺序,记住个大概:(圆括号)>算术运算符>比较运算符>逻辑运算符。

自增自减写在前面和后面的区别:

  • 如果++写在变量的前面, 那么会先将变量自增再用自增之后的结果参与运算
  • 如果++写在变量的后面, 那么会先将变量的值参与运算再将变量自增
  • 总结一句话: ++在前, 先自增再运算, ++在后, 先运算再自增

除了前面介绍的运算符之外,JavaScript还提供了一些其它十分有用的运算符,如下表所示:

算术运算符:

  1. +  加法运算符
  2. –   减法运算符,或负值运算符
  3. *  乘法运算符
  4. /   除法运算符
  5. % 模运算符,或称取余运算符,要求%两侧均为整型数据

% 取模(取余)运算符的注意事项:

1)取模运算符的操作数只能是整数  

2)取模运算符的正负性取决于前面那个操作数正负

3)如果取模运算的左边小于右边, 那么结果就是左边

取余(模运算):5%3=2; -5%3=-2; 5%-3=2; -5%-3=-2 (余数的符号与被除数一致!)

2%9=2;

www.9778.com 1

  

优先级: 

  逻辑运算符的优先级顺序为: 小括号() > 负号 – > ! > 算术运算符 > 关系运算符 > && >
||

 条件运算符(三目运算符 ” ? :
“):表达式1?表达式2:表达式3

如果表达式1为真,三目运算符的运算结果为表达式2的值,否则为表达式3的值

单目运算符:操作数只有一个(-1;)

双目运算符:操作数有两个(1 – 2;)

三目运算符:操作数有三个(5 > 4 ? 1 : 0)

 

当我们不确定某些运算符的优先级的时候,可以使用() 来明确优先级

www.9778.com 2

 

☞ C语言(运算符),ios运算符
算术运算符: % 取模 ( 取余 )运算符的注意事项: 1 )
取模运算符的操作数只能是整数 2 )…

逻辑运算符通常在条件语句中使用,它们和关系运算符一起构成复杂的判断条件。JavaScript提供了三种逻辑运算符:&&||!,分别表示逻辑与,逻辑或和逻辑非。

算术运算的注意点:

  1. 自动类型转换

    int a = 10.6;

    int b = 10.5 + 1.7;

    int b = 10.5 + 10; //将右边的10提升为了double类型

    自动将大类型转换为了小类型,会丢失精度

  1. 自动类型提升

  (相同数据类型的值才能进行运算(比如加法运算),而且运算结果依然是同一种数据类型。系统会自动对占用内存较少的类型做一个“自动类型提升”的操作)

    float a = 10 + 3.45f;//int 提升为 float    

    int b = ‘A’ + 32; // char 提升为 int

    double c = 10.3f + 5.7; // float 提升为 double

  1. 解决除法的精度问题

    double b = 1.0 / 2;

  1. 强制类型转换

  (将大范围的数据赋值给小范围变量时,系统会自动做一个强制类型转换的操作,这样容易丢失精度)

    double a = (double)1 / 2;

    double b = (double)(1 / 2);

    int i = 10.7;  //系统转

    int i = (int) 10.7;  //自己强转

    int a = 198l; // long 转换为 int    

    char b = 65; // int 转换为 char

    int c = 19.5f; // float 转换为 int

 

赋值运算符的结合方向是:从右到左,而且优先级比算术运算符低

赋值运算符是所有运算符中除了逗号运算符以外优先级最低的

 

 

  SQL Server中有一些关键字可以替代谓词语义的含义,也可以称为SQL
Server中的谓词。

iOS开发入门 ☞ C语言(运算符),ios运算符

x == y比较x是否等于y,相等时运算结果为true,否则为falsex !=
y比较x是否不等于y,不相等时运算结果为true,否则为falsex >
y比较x是否大于y,大于时运算结果为true,否则为falsex <
y比较x是否小于y,小于时运算结果为true,否则为falsex >=
y比较x是否大于等于y,大于等于时运算结果为true,否则为falsex <=
y比较x是否小于等于y,小于等于时运算结果为true,否则为falsex ===
y比较x和y的值和类型是否完全相同,完全相同时运算结果为true,否则为falsex
!==
y比较x和y的值和类型是否存在不同,存在不同时运算结果为true,否则为false

sizeof()运算符:

sizeof可以用来计算一个变量或者一个常量、一种数据类型所占的内存字节数。

注意:sizeof是一个运算符, 不是一个函数

          利用sizeof计算的格式: sizeof(变量/常量/数据类型);

 

sizeof一共有3种形式:

  1. sizeof(变量常量)
  2. sizeof  变量常量
  3. sizeof(数据类型)

 

举例:

#include <stdio.h>

int main() {

    char c=’a’;

    printf(“%lu, %lun”, sizeof(10), sizeof(c));//4,
1

    printf(“%lu, %lun”, sizeof 10, sizeof c);//4,
1

    printf(“%lun”, sizeof(int));//4

    return 0;

}

 

    

逻辑运算符

  && 逻辑与 、|| 逻辑或 、! 逻辑非

  使用注意:

  • 若想判断a的值是否在(3, 5)范围内,千万不能写成3<a<5,因为关系运算符的结合方向为“从左往右”。比如a为2,它会先算3<a,也就是3<2,条件不成立,结果为0。再与5比较,即0<5,条件成立,结果为1。因此 3<a<5的结果为1,条件成立,也就是说当a的值为2时,a的值是在(3, 5)范围内的。这明显是不对的。正确的判断方法是:(a>3) && (a<5)
  • 可以多次连续使用逻辑非运算符:!(4>2)结果为0,是”假”,!!(4>2)结果为1,是”真”,!!!(4>2)结果为0,是“假”
  • C语言规定:任何非0值都为“真”,只有0才为“假”。因此逻辑与也适用于数值。  
  • 比如:
    • 5 && 4的结果是1,为“真”;-6
      && 0的结果是0,为“假”。
    • 5 || 4的结果是1,为“真”;-6
      || 0的结果是1,为“真”;0 || 0的结果是0,为“假”。
    • !5、!6.7、!-9的结果都为0,!0的结果为1。

  && 和 ||
都具有短路特征:

  如果前一个表达式能决定最终结果则不会计算后一个表达式!

#include <stdio.h>

int main() {

    //逻辑运算符&&和||的短路特征

    int a=3,b=4,c=5,r;

    r=(a>b)&&(++b>c);

    printf("%d,%d,%d,%dn", a, b, c, r);//3, 4, 5, 0

    r=(a<b++)||(b<c++);

    printf("%d,%d,%d,%dn", a, b, c, r);//3, 5, 5, 1

    

    //非短路的逻辑运算符&和|

    a=3;b=4;c=5;

    r=(a>b)&(b>++c);

    printf("%d,%d,%d,%dn", a, b, c, r);//3, 4, 6, 0

    r=(a<b)|(b<c++);

    printf("%d,%d,%d,%dn", a, b, c, r);//3, 4, 7, 1

    return 0;

}

++ –自增 自减自右向左2!逻辑非自右向左3* / %乘法 除法 取余数自左向右4+
-加法 减法自左向右5+字符串拼接自左向右6< <=小于
小于等于自左向右7> >=大于 大于等于自左向右8== !=等于
不等于自左向右9=== !==恒等
不恒等自左向右10&按位与自左向右11|按位或自左向右12^按位异或自左向右13~按位非自左向右14<>右移自左向右16>>>零填充右移自左向右17&&逻辑与自左向右18||逻辑或自左向右19?
:条件表达式自右向左20= += -= *= /= <<=
>>=赋值运算符自右向左21,逗号自左向右22返回javascript教程主目录>>

自增自减写在前面和后面的区别:

  • 如果++写在变量的前面,
    那么会先将变量自增再用自增之后的结果参与运算
  • 如果++写在变量的后面,
    那么会先将变量的值参与运算再将变量自增
  • 总结一句话:
    ++在前, 先自增再运算, ++在后, 先运算再自增

 

sizeof()运算符:

sizeof可以用来计算一个变量或者一个常量、一种数据类型所占的内存字节数。

注意:sizeof是一个运算符, 不是一个函数

          利用sizeof计算的格式: sizeof(变量/常量/数据类型);

 

sizeof一共有3种形式:

  1. sizeof(变量常量)
  2. sizeof  变量常量
  3. sizeof(数据类型)

 

举例:

#include <stdio.h>

int main() {

    char c=’a’;

    printf(“%lu, %lun”, sizeof(10), sizeof(c));//4, 1

    printf(“%lu, %lun”, sizeof 10, sizeof c);//4, 1

    printf(“%lun”, sizeof(int));//4

    return 0;

}

 

下面的表格中列出了两个值是否相等的测试结果:

逻辑运算符

  && 逻辑与 、|| 逻辑或 、! 逻辑非

  使用注意:

  • 若想判断a的值是否在(3, 5)范围内,千万不能写成3<a<5,因为关系运算符的结合方向为“从左往右”。比如a为2,它会先算3<a,也就是3<2,条件不成立,结果为0。再与5比较,即0<5,条件成立,结果为1。因此 3<a<5的结果为1,条件成立,也就是说当a的值为2时,a的值是在(3, 5)范围内的。这明显是不对的。正确的判断方法是:(a>3) && (a<5)
  • 可以多次连续使用逻辑非运算符:!(4>2)结果为0,是”假”,!!(4>2)结果为1,是”真”,!!!(4>2)结果为0,是“假”
  • C语言规定:任何非0值都为“真”,只有0才为“假”。因此逻辑与也适用于数值。  
  • 比如:
    • 5 && 4的结果是1,为“真”;-6
      && 0的结果是0,为“假”。
    • 5 || 4的结果是1,为“真”;-6
      || 0的结果是1,为“真”;0 || 0的结果是0,为“假”。
    • !5、!6.7、!-9的结果都为0,!0的结果为1。

  && 和 ||
都具有短路特征:

  如果前一个表达式能决定最终结果则不会计算后一个表达式!

#include <stdio.h>

int main() {

    //逻辑运算符&&和||的短路特征

    int a=3,b=4,c=5,r;

    r=(a>b)&&(++b>c);

    printf("%d,%d,%d,%dn", a, b, c, r);//3, 4, 5, 0

    r=(a<b++)||(b<c++);

    printf("%d,%d,%d,%dn", a, b, c, r);//3, 5, 5, 1

    

    //非短路的逻辑运算符&和|

    a=3;b=4;c=5;

    r=(a>b)&(b>++c);

    printf("%d,%d,%d,%dn", a, b, c, r);//3, 4, 6, 0

    r=(a<b)|(b<c++);

    printf("%d,%d,%d,%dn", a, b, c, r);//3, 4, 7, 1

    return 0;

}

    1.通过逻辑运算符连接多个谓词(逻辑表达式),如使用AND和OR。

关系运算符

<    小于运算符

<=  小于等于运算符

>    大于运算符

>=  大于等于运算符

==   等于运算符

!=   不等于运算符

  关系运算符的返回值只有两种, 要么真, 要么假. 1(真)和0(假)

 

使用注意(优先级):

  1. (算术运算符)的优先级大于(关系运算符)

如:3+4>8-2;//结果为1; 等价于:(3+4)>(8-2);

  1. 关系运算符的结合方向为“从左往右”

如:4>3>2;//结果为0

  1. (<,>,<=,>=)的优先级大于(==,!=)

如:2==3>1;//结果为0; 等价于:2==(3>1);

int a=3>4+7;//结果为0

int b=(3>4)+7;//结果为7

int c=5!=4+2*7>3==10;//结果为0

赋值运算符

优先级: 

  逻辑运算符的优先级顺序为:
小括号()
> 负号 – > ! > 算术运算符 >
关系运算符 > && >
||

 条件运算符(三目运算符 ” ? :
“):表达式1?表达式2:表达式3

如果表达式1为真,三目运算符的运算结果为表达式2的值,否则为表达式3的值

单目运算符:操作数只有一个(-1;)

双目运算符:操作数有两个(1 – 2;)

三目运算符:操作数有三个(5 > 4 ? 1 : 0)

 

当我们不确定某些运算符的优先级的时候,可以使用() 来明确优先级

www.9778.com 3

 

  其中常用的包括:

逗号运算符和逗号表达式

    例如:a=a+1,b=3*4

        它的一般形式为:表达式1,表达式2,… …,表达式n

    逗号表达式的运算过程是:先算表达式1,再算表达式2,依次算到表达式n

    整个逗号表达式的值是最后一个表达式的值

//逗号运算符

#include <stdio.h>

//逗号运算符类似于加减乘除运算符,逗号运算符取最后一个表达式的值。

int main(){

    int num,num1;

    num=4,7; //逗号运算符的优先级低于赋值运算符

    num1=(4,7); //提高逗号运算符的优先级,先逗号运算,再赋值运算

    printf(“num=%d num1=%dn”,num,num1); // num=4 num1=7

    return 0;

}

 

上面的赋值表达式的意义是计算x+2的值,然后报结果存储到x所表示的单元中。

关系运算符

<    小于运算符

<=  小于等于运算符

>    大于运算符

>=  大于等于运算符

==   等于运算符

!=   不等于运算符

  关系运算符的返回值只有两种, 要么真, 要么假. 1(真)和0(假)

 

使用注意(优先级):

  1. (算术运算符)的优先级大于(关系运算符)

如:3+4>8-2;//结果为1; 等价于:(3+4)>(8-2);

  1. 关系运算符的结合方向为“从左往右”

如:4>3>2;//结果为0

  1. (<,>,<=,>=)的优先级大于(==,!=)

如:2==3>1;//结果为0; 等价于:2==(3>1);

int a=3>4+7;//结果为0

int b=(3>4)+7;//结果为7

int c=5!=4+2*7>3==10;//结果为0

   算术运算符:

++a和a++的区别:

    int b = ++a;  //等价于 a=a+1;  b=a;

    int b = a++; //等价于 b=a;  a=a+1;

  运算规则:先左++,再赋值,最后右++。

 

“JavaScript” === “javascript”false”JavaScript” === “JavaScript”true”65″
=== 65false”6.5” === 6.5false8 === 8.0false+0 === -0trueNaN ===
NaNfalsenull === nulltruefalse === falsetruetrue === truetruetrue ===
1falsefalse === 0falsetrue === 2falsenull === undefinedfalse 逻辑运算符

++a和a++的区别:

  1. 先操作,再使用

    int b = ++a;  //等价于 a=a+1;  b=a;

  1. 先使用,后操作。

    int b = a++; //等价于 b=a;  a=a+1;

  运算规则:先左++,再赋值,最后右++。

 

      则,在运算之前会把操作数5隐式地转换为5.0,得到结果就为2.5(符合其定论)。

算术运算符:

% 取模(取余)运算符的注意事项:

1)取模运算符的操作数只能是整数  

2)取模运算符的正负性取决于前面那个操作数正负

3)如果取模运算的左边小于右边, 那么结果就是左边

取余(模运算):5%3=2; -5%3=-2; 5%-3=2; -5%-3=-2
(余数的符号与被除数一致!)

2%9=2;

www.9778.com 4

测试表达式结果

逗号运算符和逗号表达式

  1. 逗号运算符主要用于连接表达式

    例如:a=a+1,b=3*4

  1. 用逗号运算符连接起来的表达式称为逗号表达式

        它的一般形式为:表达式1,表达式2,… …,表达式n

    逗号表达式的运算过程是:先算表达式1,再算表达式2,依次算到表达式n

    整个逗号表达式的值是最后一个表达式的值

//逗号运算符

#include <stdio.h>

//逗号运算符类似于加减乘除运算符,逗号运算符取最后一个表达式的值。

int main(){

    int num,num1;

    num=4,7; //逗号运算符的优先级低于赋值运算符

    num1=(4,7); //提高逗号运算符的优先级,先逗号运算,再赋值运算

    printf(“num=%d num1=%dn”,num,num1);
// num=4 num1=7

    return 0;

}

 

    但就此情况非要运算,还要得到正确的结果时。可以像两个操作数进行数据类型转换,即:CAST(5
as Numeric(2,1)) / CAST(2 as Numeric(2,1))。

算术运算的注意点:

    int a = 10.6;

    int b = 10.5 + 1.7;

    int b = 10.5 + 10; //将右边的10提升为了double类型

    自动将大类型转换为了小类型,会丢失精度

  (相同数据类型的值才能进行运算(比如加法运算),而且运算结果依然是同一种数据类型。系统会自动对占用内存较少的类型做一个“自动类型提升”的操作)

    float a = 10 + 3.45f;//int 提升为 float    

    int b = ‘A’ + 32; // char 提升为 int

    double c = 10.3f + 5.7; // float 提升为 double

    double b = 1.0 / 2;

  (将大范围的数据赋值给小范围变量时,系统会自动做一个强制类型转换的操作,这样容易丢失精度)

    double a = (double)1 / 2;

    double b = (double)(1 / 2);

    int i = 10.7;  //系统转

    int i = (int) 10.7;  //自己强转

    int a = 198l; // long 转换为 int    

    char b = 65; // int 转换为 char

    int c = 19.5f; // float 转换为 int

 

赋值运算符的结合方向是:从右到左,而且优先级比算术运算符低

赋值运算符是所有运算符中除了逗号运算符以外优先级最低的

 

 

前自增和后自增的区别

    

JavaScript中提供的运算符==!=分别用于判断两个操作数是相等还是不相等。这两个运算符的操作数可以是各种类型,包括数值类型、字符串类型、布尔型、对象类型以及数组。我们可以通过下面的规则来判断两个操作数是否相等:

  2.数值数据的精度和小数位:

运算符示例描述

 

其它运算符

    1.两个数据类型相同的数值进行运算,其结果数值的数据类型和两个操作数的数据类型一样:

&位与运算符。操作数对应位的值都是1时,运算结果中对应位的值为1,否则对应位的值为05
&
20|位或运算符。操作数对应位的值都是0时,运算结果中对应位的值为0,否则对应位的值为15
|
27^位异或运算符。操作数对应位的值都是1或0时,运算结果中对应位的值为1,否则对应位的值为07
^
25~位非运算符。操作数中某一位的值为1时,运算结果中对应位的值为0,否则对应位的值为1。这个运算包括第一位~
2-3<>右位移运算符。该运算符使用的一般格式为:x >>
y,表示将二进制表示的x向右移动y位,符号位保持不变,移出的位数丢弃,左侧空出来的位填零16
>> 2 -16 >> 24
-4>>>零填充右移运算符。该运算符使用的一般格式为:x >>>
y,表示将二进制表示的x向右移动y位,包括符号位一起移动,左侧空出来的位填零-16
>>> 816777215

   谓词和运算符配合使用是我们得到理想数据的最佳途径。

在四则运算时,规则是先乘除、后加减,统一优先级的运算符按从左到右的方式进行计算。下表中列出了JavaScript运算符的优先级以及运算符的结合方式,同一优先级的运算符放在同一行上,表格自上向下运算符的优先级逐渐降低。

      在查阅后可以发现一个规律,就是在同一特定的范围内,数据容量大的数据类型优先级大于数据容量小的数据类型。例如int和decimal后者的精度长度大于int,

变量是构造程序的基本元素,但是,变量只有参加运算才能够现实程序的威利。运算就需要有运算符。JavaScript提供了多种操作变量、表达式、文字量的内置运算符。JavaScript运算符可以分为5个大类:算术运算符、赋值运算符、关系运算符、逻辑运算符和其它运算符。

级别 运算符
1 ()圆括号
2 *(乘)、/(除)、%(取模)
3 +(正)、-(负)、+(加)、+(串联)、-(减)、&(位与)、^(位异或)、|(位或)
4 =、>、<、>=、<=、<>、!=、!>、!<(比较运算符)
5 NOT
6 AND
7 ALL、ANY、BETWEEN、IN、LIKE、OR、SOME
8 =(赋值)

位运算符按位计算操作数然后得到运算结果。这里的为是指二进制位,而不是十进制位。JavaScript将位运算符的操作数看做32位组成的数进行计算,然后以整数的形式返回运算结果。下表中列出了JavaScript支持的位运算符及其示例:

      那么在运算时可以判断decimal优先级较高与int,运算结果为decimal数据类型。

JavaScript使用特殊符号NaN来表示一个值不是数值的情况。NaN的英文是Not
a
Number的缩写。它不是一个字符串,而是表示非数值的一个特殊值。例如:调用函数parseInt时返回的结果就是NaN,因为这个函数要将字符串表示的数值转换为相应的整数。注意:Nan不等于NaN。

    逻辑运算符:

表达式中的操作数可以是字符串、数值,也可以是布尔值,或者是这些数据类型的组合。当然,操作数的数据类型要求与运算符的数据类型相一致。

  谓词的概念:一个运算结果为True、False或Unknown的逻辑表达式。它的运用范围有:where子句、Having子句、Check约束、联接查询的联接条件等。

nullundefined数据类型相等。

ALL 如果一组的比较都为 TRUE,那么就为 TRUE。
AND 如果两个布尔表达式都为 TRUE,那么就为 TRUE。
ANY 如果一组的比较中任何一个为 TRUE,那么就为 TRUE。
BETWEEN 如果操作数在某个范围之内,那么就为 TRUE。
EXISTS 如果子查询包含一些行,那么就为 TRUE。
IN 如果操作数等于表达式列表中的一个,那么就为 TRUE。
LIKE 如果操作数与一种模式相匹配,那么就为 TRUE。
NOT 对任何其他布尔运算符的值取反。
OR 如果两个布尔表达式中的一个为 TRUE,那么就为 TRUE。
SOME 如果在一组比较中,有些为 TRUE,那么就为 TRUE。

关系运算符有称为比较运算符,用于比较操作数之间的大小、是否相等等。关系运算符的结果是布尔值类型的truefalse。关系运算符的操作数可以是数值、字符串,也可以是布尔值。字符串按照字符从左向右逐一比较,字符采用Unicode编码。例如:字母”A”小于字母”B”。下表中列出了JavaScript支持的关系运算符和它的含义:

 

但是需要注意的是,如果式子中有乘或除,而字符串又可以转换为数值,那么这时会执行算术运算。例如:计算表达式"25" * 1 + 3的值,按照运算符的优先级,JavaScript编译器看到乘号*后,就将字符串”25″转换为数值25,然后与1相乘,其结果再与3相加,从而得到的整个表达式的结果的值为28。

 

逻辑或运算符的特点是,当两个操作数中只要有一个操作数的值是true时,逻辑或的结果就为true,否则为false。

    运算符的优先级别如下表中所示。 在较低级别的运算符之前先对较高级别的运算符进行求值。

当字符串与一个数值相比较时,如果数值的字符与字符串的字符完全一样时那么它们两个相等。例如”200″等于200。

    2.BETWEEN,检查一个值是否在指定的区间范围内,范围包括两个边界值。

字符串拼接运算符

  

运算符和表达式概述

www.9778.com,二、运算符

测试表达式结果

    www.9778.com 5

在比较两个字符串时,只有他们的长度相等,对应位置的字符也相同时这两个字符串才相等。

    

位运算符

  谓词和运算符的相互使用:

除了相等运算符之外,JavaScript还提供了一个有三个等号的比较运算符===。该运算符用于测试两个操作数是否完全一致,包括值是否相等以及类型是否相同。只有两个操作数的值相等并且类型一致的时候,一致性测的结果才为true。下标中列出了一些一致性测试的示例:

  当表达式涉及两个操作数使用算术运算符运算时,其运算结果的数据类型,根据两方面判定。

如果两个操作数都是数组类型,那么+完成算术运算加法操作。例如:6+3的结果为9,而不是63。而"36"+236+"2"的结果就是字符串拼接:362。

   

算数运算符

 

JavaScript提供了两个自增/自减运算符。使用自增和自减运算符的好处是可以使代码更加简洁。自增运算符和自减运算符都是一元运算符,它们的操作数只有一个。自增运算符有两种形式:

示例1,用于实施数据完整性为数据表添加约束:在员工表中,仅允许工资大于0的员工存储在表中。其中的谓词是“工资大于0”(SQL表达式:工资>0)。

JavaScript中的运算符是一些符合,它们是数据安照某种规则进行运算,并产生一个操作结果,+-*/都是JavaScript的运算符。它们分别完成加法、减法、乘法和除法运算。运算符操作的数据对象称为操作数,例如,在表达式3+6中,运算符是加号,操作数是3和6.运算符和操作数按照某种规则连接起来并最终计算出一个值的式子就是表达式。例如,6*3+2就是一个表达式,n=6+9也是一个表达式。当使用分号终止了一个表达式之后,这个表达式就变成了语句。下图展示了一个比较复杂的表达式中的各个部分:

     在SQL Server中运算符分为标准和非标准,如 “!=” 可用 “<>”
替代,建议使用标准的运算符。

运算符放在操作数的左边,例如:++x,称为前自增,其运算过程为:首先对x增1,然后在参与其他运算。例如:假设x的值为5,则表达式y = 3+的值为9.

      例如,5/2.0中,5的数据类型为INT,2.0的数据类型为NUMERIC。根据SQL
Server的数据类型优先级的规则。判定NUMERIC优先于INT,

当两个布尔值都是true或false时,这两个布尔值相等。

    比较运算符:

JavaScript中的赋值运算符就是一个等号,它的含义是计算赋值运算符右边的表达式,然后将该值存储在复制运算符左边变量所代表的存储单元中。例如:

    2.谓词中使用比较运算符,如某个属性值大于或小于某指定个值。

x=x+2;

 

位运算符描述示例返回结果

      可以查阅MSDN最新的“数据类型优先级顺序”:

有时候逻辑运算符的运算结果不是一个布尔值,而是一个数值。当逻辑运算符的操作数都是数值时就会发生这种情况。例如:表达式6 && 7的运算结果为7,JavaScript将该表达式结果看做是true。而表达式6 && 00 && 00 && 6的结果都被JavaScript看做为false。

    Numeric(2,1)数据类型的含义:数值一共占2位,其中小数占一位

同样,自减运算符也有两种形式:前自减,其运算原理和前自增和后自增相同。

    3.两个数据类不同的数值进行运算,其结果的数据类型为两操作数中数据类型优先级较高的数据类型:

关系运算符

 

逻辑与运算符的特点是,当两个操作数都是true时,逻辑与的结果才为true,否则为false。

    3.LIKE,判断字符串是否满足指定的格式,例如,查询名字姓氏为黄的员工(where
name like ‘黄%’)。

位运算符按位进行运算,对于&|^来说,按位运算指第一个操作数的第一位与第二个操作数的第一位进行运算,结果是运算结果的第一位;第一个图操作数的第二位与第二个操作数的第二位进行运算,结果是运算结果的第二位,以此类推。例如:5的二进制位101,6的二进制位110,下面是5和6做位运算的算式:

    精度的意思是数值中有多少位数,小数位指小数点精确到几位,小数位的位数包含在精度里,故指定数据类型的小数位必须小于小于指定的精度。

根据操作数的个数,运算符又可以分为三类:一元运算符、二院运算符和三元运算符。一元运算符只有一个操作数,例如-3中的负号;二元运算符有两个操作数,例如加法操作符和减法操作符等;三元运算符有三个操作数,例如:z = ? x : y

示例2,用于查询筛选数据的条件:查询员工表要求只返回销售部的员工。其中谓词是“部门等于销售部”(SQL表达式:部门=’销售部’)。

运算符示例功能

    4.SQL Server数据类型优先级顺序:

+5+6加法,5+6的结果为11-9-6减法,9-6的结果为3*9*6乘法,9*6的结果为54/9/6除法,9/6的结果为1.5%9%6取余数,9%6的结果为3++x++
或 ++x自增1,假设x的初值为9,++x的结果为10–x– 或
–x自减1,假设x的初值为9,–x的结果为8–x取负值,假设x的初值为9,-x的结果为-9=x=3赋值,将3赋值给x+=x
=+ 3加赋值,x += 3等价于x = x + 3-=x -= 3减赋值,x -= 3等价于x = x –
3*=x *= 3乘赋值,x *= 3等价于x = x * 3/=x /= 3除赋值,x /= 3等价于x
= x / 3%=x %= 3取余数赋值,x %= 3等价于x = x % 3

  当SQL中出现复杂的表达式,那么相应就会在表达式中出现多个运算符。那么这个时候,就要依靠SQL
Server中的运算符优先级规则,按顺序计算。   

逻辑非运算符是一个一元运算符,当操作数的值为true时,逻辑非的结果为false,否则为true。

    1.IN,在…之内,检查一个值是否存在于指定的集合内。     

自增运算符的另一种形式是运算符放在操作数的右边,例如:x++,称为后自增,其运算过程为:首先让x参与其他运算,然后在对x增1。例如,假设x的值为5,表达式y = 3+的值为8。

 

运算符说明结合方式优先级

=(等于) 等于
>(大于) 大于
<(小于) 小于
>=(大于或等于) 大于或等于
<=(小于或等于) 小于或等于
<>(不等于) 不等于
!=(不等于) 不等于(非 ISO 标准)
!<(不小于) 不小于(非 ISO 标准)
!>(不大于) 不大于(非 ISO 标准)

当两个对象引用同一个对象时,这两个对象相等。

三、关于表达式中涉及两个操作数的运算(重点)

varstr="jQuery"+"之家";console.info;//控制台输出结果为:jQuery之家

  

101101101&110|110^110~110_____________________________100111011001

 

算术运算符操作一个或两个数值,并返回一个数值类型的结果。JavaScript支持的算术运算符如下表所示:

一、浅谈谓词

运算符和操作数描述

    例如,两个整数(int)相除生成一个整数,4/2返回整数类型2。

字符串拼接运算符的作用是把两个字符串拼接为一个新的字符串。JavaScript中提供了两个字符串拼接运算符:++=。这两个运算符实际完成两类操作:算数加法和字符串拼接。JavaScript解释器根据操作数的数据类型来决定它们完成何种操作。这种一个运算符根据操作数的不同而完成不同运算的线性称为运算符重载。运算符重载也是面向对象编程语言的一个重要特性。

    根据这样的一个定论,存在着一个隐患,例如用5/2的时候正常结果因为2.5,然后sql
Server返回整数类型2。当然在创建表的时候可以对此类型的列设为小数类型,那就是5.0/2.0=2.5,

“JavaScript” == “javascript”false”JavaScript” == “JavaScript”true”65″ ==
65true”6.5” == 6.5true8 == 8.0true+0 == -0trueNaN == NaNfalsenull ==
nulltruefalse == falsetruetrue == truetruetrue == 1truefalse ==
0truetrue == 2falsenull == undefinedtrue

+(加)
-(减)
*(乘)
/ (Divide)
%(取模) 返回一个除法运算的整数余数。 例如,12 % 5 = 2,这是因为 12 除以 5,余数为 2。

当两个操作数中至少有一个操作数是字符串时,JavaScript解释器激情++=运算符解释为字符串拼接。+=运算的过程为:将运算符右边的字符串拼接到该运算符左边的是非常的后面,并将结果赋值给运算符左侧的操作数。例如:

 

? 😡 ? a :
b三元条件运算符。如果x为true,那么表达式的值为a的值,否则为b的值void用于计算不返回值的表达式delete用于删除对象并释放该对象所占用的空间new用于创建用户自定义的对象实例this返回引用当前对象typeoftypeof返回操作数的数据类型function定义匿名函数,逗号,计算两个表达式的值,并返回第二个表达式的值in当指定属性是对象的属性时返回true,否则返回falseinstanceof判断对象是否是指定的对象类型
运算符的优先级和结合方式

  

四、运算符优先级