C语言基础(2)
运算符使用
取模运算%两边操作数必须为整形
自增自减 运算符在前,先计算再取变量使用,变量在前,先使用在计算
同一个变量自增自减有歧义,减少使用
逻辑运算符的短路特性:
逻辑&&仅当左边表达式为真才会计算右边表达式,否则直接跳过右边表达式,逻辑 || 两边都计算
=扩展优先级从右往左 sizeof 数据类型所占字节数 强制类型转换只改变中间过程,并不会改变变量本身
<<位左移,>>位右移,~位取反,| 位或,两者为假才为假,& 位与,两者为真才为真,^异或,相同为0,不同为1
置1用 | ,清0用&
指针运算 *取值,&取地址
输入输出
格式化输入输出函数
int printf(const char* format,…);format:"%[修饰符]格式字符”
格式字符:
d,i:十进制整数 x,X:十六进制无符号整数 o:八进制无符号整数
u:不带符号十进制整数 c:单一字符 s:字符串
e,E:指数形式浮点小数 f:小数形式浮点小数 g:e和f中较短一种
%%:百分号本身
修饰符:
m:输出数据域宽,数据长度<m,左补空格,否则按实际输出
.n:对实数,指定小数点后位数(四舍五入);对字符串,指定实际输出位数
-:将默认的右对齐左补空格改为左对齐右补空格
+:有符号数显示正号。
0:不显示空格,改为显示0.
#:八进制十六进制显示0,0x。
l:指定为long型和double型,没有单位的数值为了防止溢出在后面家单位LL/L
多给函数参数报语法错误说明为重载,无报错说明为变参
不加\n会占到缓冲区满后一起输出,加\n可以刷新缓冲区输出
输出:
int scanf(const char* format,地址表);
scanf不要加其他符号,只保留基本输出
用%s输入字符串时不能有分隔符,会自动结束输入,并且不知道存储空间大小,谨慎使用
scanf放入循环中需要检验返回值是否为1
用抑制符*可以吃掉一个符号,防止空格作为符号输出
getchar读入unsigned char,返回int,出错返回EOF
putchar读入int ,输出char
gets对缓冲区buffer不作溢出检查,fgets和getline可以替代gets使用减少出错