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

C语言算数运算符和算数表达式

2016-06-10 09:41 281 查看
一.运算符种类:

包括加(+)、减(-)、乘(*)、除(/)、求余(或称模运算:%)

1. 加(+)、减(-)、乘(*)就是通常用到的加减乘法运算.

2. 除(/):若整数相除,结果取整,如:5/2=2,如果运算中除数和被除数中的其一为浮点数, 则结果为浮点数, 如:5.0/2 =2.5   5/2.0 = 2.5  5.0/2.0 = 2.5 

3. 求余(%):只能对整数运算, 不允许对浮点数运算, 没有意义, 因为浮点数没有余数, 运算结果的正负值与被除数相同, 例:  -5%2 = -1 -5%-2 = -1;5%2 = 1  5%-2 = 1;2%5 = 2(特别注意: 2除5上0, 余2)

二. 运算符表达式:

表达式是由操作符、操作数、标点符号组成的序列。

1. 单目运算:-5

   双目运算:a = 5

   唯一的三目运算:( a>b )0 ? a:b (求最大值:如果a>b那么返回a的值,否则返回b的值,这是条件表达式)

三. 运算符的优先级及结合性:

 括号→增减量→指针→正负→逻辑非→算数→关系→逻辑→条件→赋值→逗号

1. 逗号运算符:是以逗号最后一个运算的值为返回值,例:

       int a = 10 ;

       int b = 20 ;

       int c = 0 ;

       c = a+3,b+5 ;

       运算结果返回值为25

2.运算符的结合性:

   1). 左结合性:自左至右

   2). 右结合性:自右至左(比较少见)

四. 赋值运算:

程序中为变量赋值, 需要用到赋值运算符”=”, 由”=”连接的式子称为赋值表达式, 其一般形式为:

变量=表达式, 例:

#include<stdio.h>

        intmain(
intargc, char
*argv[] )

       {

    int nNumberA = 0 ;

            intnNumberB = 0 ;

            intnSum = 0 ;

            printf(“please input number1: ” ) ;

            scanf( “%d”, &nNumberA ) ;

 

            printf(“please input number2: ” ) ;

            scanf( “%d”, &nNumberB ) ;

            nSum = nNumberA+nNumberB ;

            printf(“nSnm=%d\n”, nSum ) ;

            return0 ;

    }

五. scanf:

    1. 输入格式:与printf是一样的

    2. 举例:

       scanf( “%d”, &nNumberA) ;

    3. scanf( “%d%d”, &a, &b )  //输入方式为:①10 空格20

②10 回车 20

      ※ 如果要输入一个数字和一个字符, 就必须以 ( “%d, %c” ) 的形式输入.

六. 错误处理机制:

   意义: 假如要求输入整数的时候, 输入了非法字符后, 会提示输入出错并清流, 回到正常状态, 使得接下来所输入的内容不受影响

   1. C语言中:

int nFlag = 0 ;

int main(
int argc,char
*argv[] )

{

      nFlag = scanf( "%d",&nNumberB ) ;

       if( nFlag ==0 )

       {

            printf( "InputError...\n" ) ;

            clearerr( stdin ) ;

            fflush( stdin ) ;

       }

return 0 ;

}

2. C++中:

   intnNumber = 0 ;

   cin >> nNumber ;

   if(cin.fail() )   // 如果输入错误

{

      cin.clear() ;

      chartemp[1000] ;

      cin.getline( temp, 1000 ) ;

      cout << ”Input Error…” <<endl ;   // 提示输出错误.

}

七. 类型转换:

   1. 隐式类型转换:

      发生在不同数据类型的量混合运算时, 由编译系统自动完成.

      遵循以下规则:

      1). 若参与运算量的类型不同, 则先转换成同一类型, 然后进行运算.

      2). 转换按数据长度增加的方向进行, 以保证精度不降低(低位向高位)

      3). 所有的浮点运算都是以双精度进行的, 即使仅含float的表达式,也要先转换成double型, 再作运算.

      4). char 和short参与运算时, 必须先转换成int型.

      5). 在赋值运算中, 赋值号两边量的数据类型不同时, 赋值号右边量的类型将转换为左边量的类型,

              如果右边量的数据类型长度比左边量长时, 赋值操作将会丢失一部分数据, 精度降低.

   2. 显式类型转换:      

      也称强制类型转换, 简称强转.

      格式1: (类型名) 变量或数值→C语言中的

      格式2: 类型名 (变量或数值)→C++中的

      例: inta = 5 ;

         int b = 2 ;

         float f = (
float )a/ b ;

      说明: 1). 类型说明符和表达式都必须加括号(单个变量可以不加)

            2). 无论是强转还是自转, 都只是为了预算作的临时性的转换, 不会改变数据说明时对该变量定义的类型.

八. 增量与减量运算复:

1. 增量运算符为”++”, 功能是使变量+1.

减量运算符为”--“, 功能是使变量减1.

2. 规则:

++a: a加1后再参与其他运算.

   a++: a参与运算后其值再加1.

   a--与-- a规则相同, 例:

int a = 10 ;

int b = ++a ;      //运算完后b=11, a=11

int b2 = a++ ;    //运算完后b2=11,a=12

注: ++a比a++效率高, 但++a比a++优先级低.

   ※ 面试题:

      以下哪个值是正确的?值为多少?

      ① a++ = a+1;  ③ a = a++ ;

      ② ++a = a+1;  ④ a = ++a ;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言