IOS开发-C基础2

基本输入输出

C语言中所有的输入输出都是调用系统函数,其头文件为stdio.h

1.字符

转义字符

\n:换行 相当于敲了一下回车

\t:跳到下一个tab位置,相当于敲一下tab键

\0:结束符号

2、字符的输入输出

getchar  :从用户输入获取一个字符。

等待输入,直到获取到空格,回车也作为有效输入。输入多个只获取第一个字符。

putchar :根据ascii码打印字符 

注意!!!在数字后面紧跟着要输入字符的时间,因输入是从输入缓冲区取得输入的 数据,在要输入字符时,因为在输入数字时会有一次回车,而回车也是字符,所以会被接收而不能正确存入用户想存储的字符      所以需要在输入字符前先吸收掉之前输入数据时的回车 可以用getchar()或者在scanf(“% c”,&avriable);在格式化控制符中%c中加一个空格变成% c;

建议使用在格式化控制符前加空格的方式  因为这样的输入可以吸收回车并且能过滤空格;

3printf &scanf

printf(“格式化字符串",参数列表);

格式化控制符(占位符)

%d输出一个int类型的变量的值。

%f输出一个float类型的变量的值。

%lf输出一个double类型变量的值。

%c输出一个char 类型的变量的值。

 %d或者%ld的其他控制符:

1.%md:m代表这个整数占多少位,m是一个整数

实际数字不足的位数用空格补齐

如果实际的整数的位数大于或者等于m时,就按实际输出

m也可以是负数,那么代表不足位在后面补齐

2.%0md:跟上面一样的作用,只不过不足位用0补齐(!!!注意重点!!!)

3.不能用其他的来补齐,只能用0

 %f或者%lf的其他控制符

float是加上小数点一共7位有效,也就是小数点后6位是有效数字

double是加上小数点一共15位有效,也就是小数点后14位是有效数字

1.不管是float还是double默认会输出小数点后6位

2.%.mf:m代表保留小数点后几位,m是一个整数,最后一位会四舍五入 (重点)

3.%n.mf:n代表总共的列数(小数点也算1列),m还是跟上面的一样,代表保留几位小数

n可以控制列数,如果实际列数小于n时,那么不足部分以空格补齐

但是如果实际列数>=n时,就按实际的输出

n<=m时,就按照m规定的输出

scanf("格式化字符串",参数地址列表);

scanf 不可以显示非格式化字符,即不能显示提示字符串。

scanf 根据 回车,换行,TAB键,空格来分隔字符

注!如果格式化字符串中有非格式化字符,输入的时候也要输入该非格式化字符

例如:接收2个整数

scanf("%d %d",&a,&b);

接收字符

scanf("%c%c%c",&a,&b,&c);

接收宽度控制

scanf(“%5d",a);接收前5位输入

注意:在参数地址列表里一定要加取地址符&

4、输入缓冲区

即用户输入先放在输入缓冲区,然后去取,如果符合要求就会被取走,不然就继续寻找

输入回车,把数据送入到缓冲区 ,且回车\n也是一个字符

运算符

表达式是由运算符,变量,常量组成的式子,表达式有确定的值,跟类型

单目运算符:一个操作数

双目:2个操作数

三目:3个操作数

1、常用运算符


 算术运算符:+,-.*,/,%

除“/”运算:当/两边的都是整数时,结果一定为整数

当有一个为浮点型数据时,结果一定为浮点型,(float或者是double由那个浮点型数据决定)

 求余”%”运算:取余结果的正负性,只取决于左边那个操作数,与右边的操作数无关

注意:浮点型数据不能进行取余运算!!!

自增自减运算符:++,—

a++,++a,a—-,—-a;当自增(自减)运算符在左边时,是先进行自增(自减),然后再用自增(自减)后的数据参与运算,若在右边,则先使用原数据参与运算,再进行本身的自增(自减)

 关系运算符:>,>=,<,<=,==,!=

 逻辑运算符:||,&&,!

 赋值运算符:=,+=,-=,*=,/=

例:赋值:a=b=c=5;可以, 从右向左运算

变量在声明的时间不可以,int a=5,b=5,c=5;

应该:

int a=5;

int b=5;

int c=5;

 逗号运算符:,

即(表达式1,表达式2,表达式3,表达式4……表达式n)

计算机会从表达式1依次运行,最终结果以最后一个表示式的结果为整个逗号表达式的结果。

注意:所有的表达式都会运行



 三目运算符:条件运算符 表达式1?表达式2:表达式3

例如x>y?x:y;

语句:执行表达式1,如果表达式1成立,则执行表达式2,否则执行表达式3

注意:三目运算和后边要学到的if-else可互换,所以建议在语句块较短时,优先选择三目运算

 sizeof() 类型或者表达式


2、优先级

    int a;

    printf("%d\n",1+2>2);//算数>关系

    printf("%d\n",0>2||1);//关系>逻辑

    printf("%d\n",a=0||1);//逻辑>赋值

    a= 1,3;//赋值>逗号

    printf("%d",a);


括号(可以嵌套) > 单目运算符 (++ -- !) > 算术运算符 (* / % 大于 + -) > 关系运算符(> >= < <= 大于 == !=) > 逻辑运算符(&&大于||) > 赋值运算符 (= /= %= *= += -=) > 逗号运算符(,)

算术运算符: * / % > + -

逻辑运算符: && > ||


断路特性  &&,||  运行前半,值已经确定,后半表达式不会运算执行   

(表达式1) &&(表达式2)     如表达式1为假,则表达式2就不会被执行

(表达式1) ||(表达式2)       如表达式1为真,则表达式2就不会被执行



3、类型转换


不管后面的表达式怎样,系统会自动转成左边的数据类型


自动类型转化

(高精度—>低精度,会损失精度)


int a = 10.2  //右边是个表达式,类型是double,值是10.2,接收是int, 会损失精度

int b = 564

char ch = b,接收的char,截断,只保留低位

强制类型转化   (类型说明符) 表达式

float f = (float)7, 7被强制转成float型

多种类型混合运算 

1、与long运算,转成long

2float参与运算,转成double运算.如果运算范围没有超过float的表示范围,不会转化

3char short运算的时候,转成 int

使用原则:防御式编程,运算时选取合理数据类型,清楚运算的结果的范围。接收的类型和表达式类型尽量一致。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值