输入输出与运算符

1.缓冲区(内存空间预留的存储空间)

        可有效减少IO设备的操作以及提高计算机运行速度。

        类型:

                全缓冲:只有填满缓冲区才进行IO操作。Windows全缓冲4096字节,Linux全缓冲1024字节。

                行缓冲:输入输出遇到换行符就进行IO操作。

                不缓冲:标准出错情况stderr,使得出错信息立马显示。

        引发缓冲区刷新事件:

                1.输出缓冲区属于行缓冲

                2.缓冲区溢满(溢出)

                3.执行fflush(stdout),手动刷新缓冲区

        设置缓冲区类型:

                setvbuf(指定对象,缓冲区容器(仅限全缓冲),缓冲类型,缓冲区大小);

                指定对象:stdout(标准输出对象)、stdin(标准输入对象)、stderr(标准错误)

                        char buf[100];

                        setvbuf(stdout,buf,_IOFBF,1024);

                        setvbuf(stdout,NULL,_IOLBF,0);

                        setvbuf(stdout,NULL,_IONBF,0);

        scanf/printf:

                scanf(“%c %d”, &a, &b);必须严格按照scanf内部的“%d %d”来进行输入,否则如:输入abcd 10,此时仅仅只有a被输入,而bcd还存在缓冲区中,10就给不到b。

                注意:

                        获取字符失败,则需要清除缓冲区

                                while (getchar() != ‘\n’);

                        判断字符是否获取失败

                                int a = scanf(“%d %d”,&b,&c);查看a是否等于2

                                printf(“%.2f\n”,a);控制格式

2.运算符

        (1)算术运算符

                单目运算符:++ -- int i = 3;int ret = i+++i++ ret=7 i=5

                双目运算符:+ - * / %(取余)

                注意:

                        整数相除为整数,小数舍弃

                        取余运算符两边必须为整数

        (2)关系运算符

                >  <  =  >=  <=  !=  ==

        (3)逻辑运算符

                逻辑反:!  逻辑与:&&(有假为假)  逻辑或:||(有真为真)

                惰性运算:

                        int a = 1;

                        int b = 2;

                        int ret = a>b && (++a);

                注意:ret从左到右,a>b为假,此时后续就不再计算,++a就不生效,整个式子直接返回结果假。

        (4)位运算符

                按位取反:~ 按位与:&(有0为0) 按位或:|(有1为1)

                按位异或:^(相同为0) 左移:<< 右移:>>

                注意:

                        无符号移位,移出去丢掉,空出来补0

                        有符号移位,左移同上,右移空出来补符号位

        (5)赋值运算符

                赋值:=

                复合:+= -= /= |= >>= <<=

        (6)特殊运算符

                三目:表达式1?表达式2:表达式3

                        表达式1为真,则结果为表达式2;

                        表达式1为假,则结果为表达式3;

                逗号:(表达式1,表达式2,...,表达式n)

                        整个逗号表达式的值为表达式n的值                   

                        有如下例子:

                        int a=3,a=6*a,a*3 a=18

                        int a=3,6*a   a=3

                        int a=3; a=(a+3,a=a+4) a=10

                        int a=3; a=(a+3,a*4,a+4) a=10

               特别注意:

                                无括号:看是否有赋值号,有则需要进行变值,没有则不用管;

                                有括号:同样看是否有赋值号,有则需要变值,且括号内的第一个表达式会一般赋值,若没有则直接跳转到最后一个“表达式n”即为整个式子的数值;

优先级:[]() > ++ -- > 算术 > << >>(移位) > 关系 > 位(&^|) > 逻辑(&& ||) > 赋值 > 逗号 算术关系位逻辑赋值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值