从零开始的应届求职生活(自勉第三天)

一. 转义字符

1. 'n'  //字符n
   '\n' //一个字符  ---- 换行效果 --- 换行符 
   '\t' //制表符 
   '\b' //回退   
   '\r' //回车 

其中\t(tab)包括之前一共8个字符站位,原字符长度由空格站位。

练习eg1:abc\tij#k\n               解:abc    ij#            (从a开始不包括i一共站位8个字符,最后\n换行(不明显))。

eg2:ab*c\t*de\rf\tg\n              解:fb*c    gde         (需要注意的事\r回车,它始终以光标为起点,当回车后,光标在a的位置上,所以f覆盖了a)。

2. 字符常量,可有几种表示

eg:       'A'       '\101'     '\x41'  

编译后:65        0101     0x41

后2种不常用,直接明了表示即可。

二. 算术运算符(+ - * / % ++ --  ,)

1. 除法:1.如果是两个整型数 相除 效果相当于是整除
               2.程序出错       编译时 出错  --- 语法问题 
                                       运行时 出错  --- 逻辑问题 
               3.除法运算 的 被除数不能为 0

2. 求余:1.求余运算的运算数 必须是 整型 
               2.被(除)操作数 不能为 0 
               3.求余运算的结果的符号 取决于 左操作数 
        其中有种情况

int a = -10;
unsigned int b = 5;

printf("a = %u\n",a);

if (a + b > 0)
{
    printf("yes\n");
}
else
{
    printf("no");
}

结果为yes     原因是int本质上 是signed int 但是他和unsigned一起运算时,要统一为unsigned 原因可看下表:

当多种数字类型在一起运算时,低优先服从高优先级并变成高优先级的数字类型,所以结果为正。

这里涉及隐式类型转化:1:从右向左;2.:从下到上,不同精度的类型混合运算时,低精度往高精度转,上图为运算规则.

eg:10 + 'a' + 1.5 - 8765.1234 * 'b'            结果为double类型。

---------------------------------------------------------------------------------------------------------------------------------

3. ++(自增)

a++   //后置++          ++a   //前置++
    先用后加                   先加后用 

  注意:
        1.   运算规则 ,单独使用时,没区别 
           参与到别的运算中时,此时运算规则发挥作用 
        2. 运算数必须是个左值 

其中左值为能够放在左边的称为左值(可以被定位的:一般为变量)

       右值为只能放到右边的称为右值 (不能被定位的:一般为常量,表达式)

练习eg:i+++i   i初始值为1

里面设计贪心原则:从左到右,逐个扫描字符, 将字符尽可能多的结合成c语言的运算符 

它可以拆分为 (i ++) +i,所以结果为(1+1)+1 = 3

eg2:i+++++i

先对他拆分    i++   ++   +i,这里出现了i++ 之后又在它的基础上++,这里涉及上面的注意2:运算数必须是个左值,i++不是左值,而是一个表达式,与原则矛盾,故编译错误。所以不要对同一个变量连续多次 ++  --。

4.--(自减)与++(自加)运算一致

5.注意优先级 谭浩强第三版p356 优先级有详尽表格。

6. 不同类型的数值混合赋值时,

eg1:高精度 =>低精度  double/float => int    ---- 精度丢失

eg2. 长类型 => 短类型   --- 高位截断,其中小端(pc)记录是从低位向高位记录,所以会高位会无法记录,从而高位截断。

eg3:短类型 => 长类型   无符号 短类型 => 长类型   高位补0
                                        有符号 短类型 => 长类型   高位补 符号位

7.逗号运算:整个逗号运算表达式中,最后一个表达式的结果(逗号优先级最低)

eg:

int i = 0;
int result;
result = (1+2,i++,3+4);
printf("result = %d\n",result);
printf("i = %d\n",i);
return 0;

结果:result = 3   i= 1,其中1+2 和3+4之间有逗号,优先级最低,所以result只需算到1+2即可,i++不受影响(优先级高)。

算术运算 > 赋值 > 逗号运算 。

三.

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值