C.06运算符及语句


//单目 (一元)或 双目(二元) 运算符( 指 所需 操作数的个数)
一元运算符优先级高于 二元运算符
1 算数运算符 (+ - * / % ++ -- ) //其中 ++ --为单目运算符 其余为双目运算符
- 特殊 即可一元运算符 也可 二元运算符 [-a(a的相反数)或 a-b]
2 关系运算符 (> < == >= <= !=)
3 逻辑运算符 (! && ||)
4 位运算符  (<< >> ~ | ^ &)
5 赋值运算符 (= 及其扩展运算符)
6 指针运算符 (* 和 &)
7 条件运算符 (?:) //三元运算符
8 字节运算符 (sizeof)
9 逗号运算符 (,)
10 强制类型转换运算符((类型))
11 成员运算符 (.->)
12 下标运算符 ([])
13 其他 (函数调用运算符)
问题 当算数表达式包含 多个运算符时 如何确定运算顺序?
两类运算符的优先级相同 时
运算符的结合性
左结合 --从左向右计算 3*4/2=(3*4)/2=12/2=6
右结合-- 从右向左计算  去相反数 --4=-(-4)=4
巧妙运用 圆括号 改变运算顺序 --从内向外运算
例如 3*4/(2+2)

随机函数 rand()
生成随机数 在 0~32767之间的一个随机数
如何生成一个自定范围 如(1~100)内的随机数?
magivc =rand()%100; //0~99
magivc =rand()%100+1; //1~100

变量的类型决定了
    占用内存空间的大小
    数据的存储形式
    合法的表数范围
    可参与的运算种类
变量名标识了内存中的一个存储单元
赋值运算符和数学中的 等号有何区别?
1 有方向性
2 左值和右值类型一致

赋值运算符的优先级?
简单赋值
变量 = 表达式   //a= 3+9; 出现两个运算符 一个是算数运算符 +
        //一个是赋值运算符 =  算数运算符优先级 高于 赋值运算符
赋值运算符 的结合性?
从右向左结合。
多重赋值: 变量1 =变量2=表达式  //a=b=3   = a=(b=3) 对
int a=b=3; 错
int a=3;b=3;对
赋值语句:赋值表达式后面加 分号
a=3; a=3
已知 int a=3;
执行 a+= a -= a*a 后 变量a值?
1 先执行 算数运算 符 a*a=9; a+= (a- = 9)
a= a-9=3-9 =-6
a+=-6  等于 a=a+(-6)=-6+(-6)=-12
a(写操作)=a(读操作)+1 等于 a+=1
增1运算符 减1 运算符
前缀 ++n,--n
m =++n;
n=n+1;
m=n;
printf("%d",++n);
n=n+1;
printf("%d",n);
printf("%d",n++);
printf("%d",n);
n=n+1;

m =++n-2;
++ 一元运算符优先级高于 二元运算符
n  = n+1;
m = n-2;
m =n++ -2;
m = n-2;
n = n+1;
总结: 前缀和后缀 对操作数的值是  相同的 但表达式的值是 不同的
printf("%d"-n++);
printf("%d",-(n++));

n =n+1;
printf("%d",-n);

printf("%d",-n);
n =n+1;
为什么把 n++括起来不先执行 n++运算?
把 n++括起来 只表示 n++这个操作运算对象 是 n 【并不代表先执行 n++
到底是先执行还是后执行 看自增运算符是前缀 还是后缀运算符 如果是前缀
一定是先执行 如果是后缀一定是 后执行
之所以把它括起来代表 运算符操作对象是 n 而不是 -n

而不是 -n
如果是 -n 表明 他不是右结合而是 左结合(相当于 -n= -n +1 自增运算符自能对变量 不能对表达式 运算 ,-n 是表达式  将表达式 放在赋值运算符左侧 违反 c规定 (规定赋值运算符的左侧是变量 不能是表达式))
顾因为它是右结合 所以加括号

优点:增一 减一 运算生成的代码效率更高
缺点:加一减一混合运算 使得程序可读性变差,不同编译器产生的结果不同
良好的设计风格 提倡
一行语句 一个变量只出现一次 增一或 减一运算

 

 


操作数自能是变量,不能是表达式 自增自减运算
c中的 9种控制语句
1 if()... else.... //条件语句
2 for()..... //循环语句
3 while()....// 循环语句
4 do...while()... 循环语句
5 continue  //结束本次循环语句
6 break   //终止switch 或 循环语句
7 switch   // 多分支选择语句
8 return    //从函数中返回 语句
9 goto //转向语句

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值