C语言碎片知识
sizeof
1.sizeof是C语言中的一个操作符,同时也是关键字!!!!
2.sizeof的操作数可以是类型,变量或表达式
如图,第一个为什么是6?,因为先计算了3的大小,占4个字节,然后给4加了2.
第二个,当sizeof的操作数是类型时,必须加括号,
第三个,当操作数时变量时,不加括号也行
3.sizeof括号中的表达式不进行计算
4.sizeof返回值是无符号整数,但没明确是unsigned int还是unsigned long还是unsigned short等等,所以给了size_t类型
signed,unsigned
1.这是两个关键字
2.它们只修饰字符型和整型
3.对与int,默认是signed类型;
4.注意,对于char,没规定是signed类型,这与当前系统有关。
全局变量,局部变量
当全局变量与局部变量同名时,若在局部变量的作用域内,则局部变量优先使用
printf
1.当占位符是%s时,它不会忽略空格,当读到换行符时,就会停止读入,同时会抛弃换行符,看下面的例子
这就是区别,gets在读取时,遇到换行符会停止,同时也会将换行符读取上,所以puts在输出时也会将ret末尾的换行符输出
而printf不会将换行符读取上,所以hello和hehe靠在了一起。
2.限定宽度:在占位符中加上宽度即可。当宽度用整数表示时,默认是由对齐,负数则为左对齐
3.一般情况下,正数前不加+,若想显示+,则在%后面加上+
4.小数的宽度和小数位数可以通过参数来传递,用*表示,如下:
表示最小宽度是6,小数位数是2。
注意,3.14前面有空格,这是因为3.14一共占了4位,还少俩位,所以进行了右对齐
5.输出部分字符:只要在%s中间加上点号和数字即可,例如%.5s。若忘记加点号,则表示最小宽度为5,如下:
scanf
1.scanf是一个函数,不是关键字,也不是操作符,头文件是stdio.h
2.scanf处理数值占位符(比如%d,%ld,%f……)时,会自动忽略空白字符,包括空格,制表符,换行符
3.对于起首空格,除了%c,其他占位符都可以忽略
4.如何让%c不读人前面的空白字符?在%c前面加空格即可
此时,在一个字符前,不管有多少空格,都会被忽略。这一点以后在循环赋值时常用
看这俩个的区别,第一个在%c前没加空格,所以在读入23后把空格赋给了ch,所以输出了空格
5.上面说了scanf的占位符除了%c都会忽略空格,所以%s遇到空格就会停止读入,它也不会将空格存进去。另外,scanf函数遇到%s占位符时,会在字符串末尾存储一个\0.