一.运算符种类:
包括加(+)、减(-)、乘(*)、除(/)、求余(或称模运算:%)
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 ;