1.逗号表达式的求解过程是:先求解表达式1,再求解表达式2。整个逗号表达式的值是表达式2的值(应用:for循环)
2.printf:屏显打印,标准输出
sprintf:将格式化的数据写入字符串中,返回字符串的长度
fprintf:int fprintf(FILE *stream,char *format,[argument]);以指定的格式将参数放到指定文件
format:格式,stream:流指定的文件
3.stdout, stdin, stderr:标准输出,标准输入和标准错误。
stdout和stderr是不是同设备描述符。stdout是块设备,stderr则不是。对于块设备,只有当下面几种情况下才会被输入,1)遇到 回车,2)缓冲区满,3)flush被调用。而stderr则不会。(stdout是行缓冲的,他的输出会放在一个buffer里面,只有到换行的时候,才会输出到屏幕。而stderr是无缓冲的,会直接输出)但这两者都默认向屏幕输出。
int main(){
fprintf(stdout,"Hello ");
fprintf(stderr,"World!");
return0;
}答案:World!Hello---stdout缓冲,等到新行来了才输出。
4.文件操作
C语言将计算机的输入输出设备都看作是文件。例如,键盘文件、屏幕文件等。ANSI C标准规定,在执行程序时系统先自动打开键盘、屏幕、错误三个文件。这三个文件的文件指针分别是:标准输入stdin、标准输出stdout和标准出错 stderr。
返回错误EOF,或者文件结束EOF, feof()或ferror()来判断是到了文件结束,还是出现了一个出错。
5.printf的返回值是0,之前是输出字符串的个数
6.sizeof(i++)
sizeof不是一个函数,是一个操作符,其求i++的类型的size,这是一件可以在程序运行前(编译时)完全的事情,不会改变后续i的值。
7.短路求值:对于(条件1 && 条件2),如果“条件1”是false,那“条件2”的表达式会被忽略了。对于(条件1 || 条件2),如果“条件1”为true,而“条件2”的表达式则被忽略了
8.scanf
(
"%[^r]",inputstr
);
---遇到字符r结束