c语言的输入输出:ANSI组织发布的标准c库,使用函数需要包含对应头文件,使用输入输出函数时需要包含stdio.h (stdio -> standard input output)标准输入输出
格式化输出:int printf(const char * restrict format, ...),printf函数返回值是被输出的字符的数量,不包含'\0',遇到\n输出结束,当发生错误时返回一个负整数,c语言中字符串用双引号( “ ” )表示
%转换说明符
转换说明:
d:以有符号的10进制输出、f:浮点型输出
o,u,x/X:把无符号整型转换为8,10,16进制输出
c:以字符型输出
s:以字符串型输出
p:把存储单元的地址以16进制输出
%:可以输出%
标志说明
#:可以吧对应进制的前导符进行输出,#o输出八进制前导符0,#x输出16进制前导符0x
~:可以用于数据对齐,-表示左对齐,默认为右对齐
转换精度:.3指定输出位数,表示输出3位小数
长度修饰符
hh:指把整型转换为字符型输出,只针对输出内容,数据本身无影响
h(half-一半):把整型转换为短整型
大端存储与小端存储:小端-数据低字节存储在内存的低地址;大端-数据高字节存储在内存的低地址
缓冲区:全缓冲、无缓冲、行缓冲
全缓冲:缓冲区被填满,立即把数据冲刷到文件,或者在关闭文件,读取文件及修改缓冲区类型也会立即把数据冲刷到文件
无缓冲:指没有缓冲区,直接输出
行缓冲:当换冲区被填满(一般是4kB及4096字节)或者缓冲区遇到 ‘\n’,或者读取文件内容,修改缓冲区类型,会立即把数据冲刷到文件中,printf函数采用行缓冲
fflush()函数:用户可以调用库函数刷新输出缓冲区(主义不能刷新输入缓冲区,一般编译器不支持)——fflush(stdout); 可以刷新输出缓冲区
格式化输入:scanf(scan format)翻译为格式化扫描
scanf函数的第一个参数是字符串可以包含转换说明符%
scanf("%[0-9]s",str); 只接收0-9之间字符,输入其他数据则停止输入
scanf("%[^0-9]s",str); 不接收0-9之间字符,输入0-9字符停止输入
scanf("%[^#]s",str); 输入#表示停止输入数据
c语言的运算符:+、-、*、/、%、++、--;++,--属于单目运算符,其他5种属于双目运算符
/:除法运算符,当两端操作数都是整数时,输出也为整数且会直接舍弃小数保留整数(不会4舍5入):5/3=1,若有一个数为浮点数则输出为浮点数,默认6位数精度(小数点后保留6为小鼠),
%:取余运算符,两个操作数必须为整型,5%3=2
c语言中单目运算符和三目运算符,赋值运算符都是遵循右结合性,其它运算符遵循左结合性
++:a++,a先参与表达式运算,运算结束后a自增1;++a,a先自增1,在参与表达式运算
sizeof():此函数在c语言中是一个操作符,用于计算数据类型大小,结果以字节为单位,其括号里的表达式不会参与计算,当sizeof表达式中设计多个数据类型大小时,会进行隐世转换数据类型
自动类型转换:编译器默认转换,可能会影响数据精度,转换按照数据长度增加的方向进行,所有的浮点型都是以双精度运算的,运算中只有float类型时也需要先转换为double类型在运算,char与short参与运算时必须先转换成int类型
强制类型转换:(需要转换的数据类型) 变量——(int)a; 将变量a转换为整型
位操作运算符:~ & ^ | << >> (对二进制而言)
~:按位取反,对于二进制而言,0-1;1-0
&:按位与,有0为0,两个bit同时为1才为1
|:按位或,两个bit中有1,结果为1
^:按位异或,两个bit,相同为0,不同为1
<<:左移运算符,高位舍弃,低位补零——1111 0000 <<3——1110 0000
>>:右移运算符
a=0x0000 ?000
设置(置1)a的bit 3 = 1<<3 -> 0x 0000 1000 ->aI1 ->0000 1000——a | =(1<<x)->设置a的bit x;
清除(请0)a的bit 3 = 1<<3 -> 0x 0000 1000 ->~(1<<3) -> 0x1111 0111 --> a & ~(1<<3) --> 0x0000 0000,——>a &= ~(1<<x);
关系运算符:> < >= <= == !=
> < >= <= 这四种关系运算符优先级相同且高于 == !=,此两者优先级相同
逻辑运算符:&& || !
&&:逻辑与,当两个表达式为真,结果为真(当第一个表达式为假时结果为假,且后续表达式不在参与运算)
||:逻辑或,两个表达式有一个为真,结果为真,当第一个表达式为真后续表达式不在运算
!:逻辑非,单目运算符,真变为假,假变为真
条件运算符:?(唯一一个三目运算符)m ? x:y m表达式为真返回x,为假返回y
逗号运算符:(优先级最低) x,y,n; 取最后一个表达式n的结果
优先级:单目运算符 > 算数运算符 > 移位运算符 > 关系运算符 > 相等