简单的算数运算和表达式
变量的类型决定了变量在内存中内存的字节数;
变量在内存中的存储方式(不同类型的变量合法的取值范围是不同的);
不同类型的变量参与的运算类型是不一样的;
问题:当算数运算符包含两个或两个以上的操作数时,根据什么确定运算顺序?
- 运算符的优先级
- 不同优先级时—从高到低运算
- 相同优先级时----二元算数运算符为左结合(从左到右)
举例:a = -3 * 2 - 1 + 3 ; 和 a = - (3 * 2 - 1 +3);
a = ((-3 )* 2) - 1 + 3 ; a= (-6)-1+3; a = - (6 - 1 + 3 );
a = (-7) + 3; a = - (5 + 3);
a = -4; a = -8;
巧妙使用圆括号改变运算符顺序-------------从内往外运算。
计算并输出一个三位整数的个位、十位、百位数字之和
如何分离个位、十位、百位数字?
153/100 = 1
153%10 = 3 (取余的计算) 153-1*100-5 * 10 = 3
153-1*100 = 53 153%100 = 53
53/10=5 153/10%10=5
**随机函数 rand() **
- 生成一个在0~32767之间的随机数
问题:怎样生成一个指定范围的随机数?
例题:生成一个在1~100之间的随机数?
magic = rand() % 100 + 1;
复合的赋值运算符
三种赋值形式:
- 简单赋值:变量 = 表达式 ;
- 多重赋值:变量1 = 变量2 =表达式 ;
赋值运算的结合性是右结合。
- 复合的赋值:理解如下
num = num + 5;//两者是等价的
num += 5;//理解:num + 5赋值给num 简写形式更直观,且执行效率也会更高一些。
简单的赋值运算:例题:
已知a = 3;
执行 a += a -= a * a后,变量a的值?
a += a -= a * a
a += a -= 9
a += -6
a = -12
执行 a += a -= a *= a后,变量a的值?
a += a -= *a = a
a += a -= 9
a += 0
a = 0
- 增1和减1运算符
n++,n–,++n,–n;
- ++让参与运算的变量加1,–让参与的运算减1;
- 作为前缀运算符时,先加/减1,在进行取值。
m = ++n; ------------->n = n + 1 ; m = n ;
- ++让参与运算的变量加1,–让参与的运算减1;
- 作为后缀运算符时,先取n的值,再进行加/减1的操作
m = n++; ------------------->m = n ; n = n + 1;
举例:对下面两种情况的比较
j = ++i - 2;//赋值i=5时
i = i + 1;//i= 6
j = i - 2